mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
2125 lines
387 KiB
HTML
2125 lines
387 KiB
HTML
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
<head>
|
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>windows.winproxy — PythonForWindows 0.4 documentation</title>
|
|
<link rel="stylesheet" href="../../_static/classic.css" type="text/css" />
|
|
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
|
|
<link rel="stylesheet" href="../../_static/css/mbasic.css" type="text/css" />
|
|
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
|
|
<script type="text/javascript" src="../../_static/jquery.js"></script>
|
|
<script type="text/javascript" src="../../_static/underscore.js"></script>
|
|
<script type="text/javascript" src="../../_static/doctools.js"></script>
|
|
<link rel="index" title="Index" href="../../genindex.html" />
|
|
<link rel="search" title="Search" href="../../search.html" />
|
|
</head><body>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../genindex.html" title="General Index"
|
|
accesskey="I">index</a></li>
|
|
<li class="right" >
|
|
<a href="../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.4 documentation</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body" role="main">
|
|
|
|
<h1>Source code for windows.winproxy</h1><div class="highlight"><pre>
|
|
<span></span><span class="kn">import</span> <span class="nn">ctypes</span>
|
|
<span class="kn">import</span> <span class="nn">functools</span>
|
|
|
|
<span class="kn">import</span> <span class="nn">windows</span>
|
|
|
|
<span class="kn">from</span> <span class="nn">ctypes.wintypes</span> <span class="k">import</span> <span class="o">*</span>
|
|
<span class="kn">from</span> <span class="nn">windows.generated_def.winstructs</span> <span class="k">import</span> <span class="o">*</span>
|
|
<span class="kn">from</span> <span class="nn">windows.generated_def.windef</span> <span class="k">import</span> <span class="o">*</span>
|
|
<span class="kn">import</span> <span class="nn">windows.generated_def.winfuncs</span> <span class="k">as</span> <span class="nn">winfuncs</span>
|
|
<span class="kn">from</span> <span class="nn">windows.generated_def.ntstatus</span> <span class="k">import</span> <span class="n">NtStatusException</span>
|
|
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="k">import</span> <span class="n">dbgprint</span>
|
|
|
|
<span class="c1">## winfuncs helpers</span>
|
|
|
|
<div class="viewcode-block" id="is_implemented"><a class="viewcode-back" href="../../winproxy.html#windows.winproxy.is_implemented">[docs]</a><span class="k">def</span> <span class="nf">is_implemented</span><span class="p">(</span><span class="n">winfunc</span><span class="p">):</span>
|
|
<span class="sd">"""Return :obj:`True` if DLL/Api can be found"""</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">winfunc</span><span class="o">.</span><span class="n">force_resolution</span><span class="p">()</span>
|
|
<span class="k">except</span> <span class="n">ExportNotFound</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="kc">False</span>
|
|
<span class="k">return</span> <span class="kc">True</span></div>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">get_target</span><span class="p">(</span><span class="n">winfunc</span><span class="p">):</span>
|
|
<span class="sd">"""POC for new hook"""</span>
|
|
<span class="k">return</span> <span class="n">winfunc</span><span class="o">.</span><span class="n">target_dll</span><span class="p">,</span> <span class="n">winfunc</span><span class="o">.</span><span class="n">target_func</span>
|
|
|
|
|
|
<span class="c1"># Rip-of windows.utils: should be removed from the other place ?</span>
|
|
<span class="k">def</span> <span class="nf">_get_func_addr</span><span class="p">(</span><span class="n">dll_name</span><span class="p">,</span> <span class="n">func_name</span><span class="p">):</span>
|
|
<span class="c1"># Load the DLL</span>
|
|
<span class="n">windll</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WinDLL</span><span class="p">(</span><span class="n">dll_name</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="nb">getattr</span><span class="p">(</span><span class="n">windll</span><span class="p">,</span> <span class="n">func_name</span><span class="p">),</span> <span class="n">PVOID</span><span class="p">)</span><span class="o">.</span><span class="n">value</span>
|
|
|
|
|
|
<div class="viewcode-block" id="resolve"><a class="viewcode-back" href="../../winproxy.html#windows.winproxy.resolve">[docs]</a><span class="k">def</span> <span class="nf">resolve</span><span class="p">(</span><span class="n">winfunc</span><span class="p">):</span>
|
|
<span class="sd">"""Resolve the address of ``winfunc``. Might raise if ``winfunc`` is not implemented"""</span>
|
|
<span class="n">winfunc</span><span class="o">.</span><span class="n">force_resolution</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="n">_get_func_addr</span><span class="p">(</span><span class="o">*</span><span class="n">get_target</span><span class="p">(</span><span class="n">winfunc</span><span class="p">))</span></div>
|
|
|
|
|
|
<div class="viewcode-block" id="Kernel32Error"><a class="viewcode-back" href="../../winproxy.html#windows.winproxy.Kernel32Error">[docs]</a><span class="k">class</span> <span class="nc">Kernel32Error</span><span class="p">(</span><span class="ne">WindowsError</span><span class="p">):</span>
|
|
<span class="k">def</span> <span class="nf">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">func_name</span><span class="p">):</span>
|
|
<span class="n">win_error</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WinError</span><span class="p">()</span>
|
|
<span class="n">api_error</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">Kernel32Error</span><span class="p">,</span> <span class="bp">cls</span><span class="p">)</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">)</span>
|
|
<span class="n">api_error</span><span class="o">.</span><span class="n">api_name</span> <span class="o">=</span> <span class="n">func_name</span>
|
|
<span class="n">api_error</span><span class="o">.</span><span class="n">winerror</span> <span class="o">=</span> <span class="n">win_error</span><span class="o">.</span><span class="n">winerror</span>
|
|
<span class="n">api_error</span><span class="o">.</span><span class="n">strerror</span> <span class="o">=</span> <span class="n">win_error</span><span class="o">.</span><span class="n">strerror</span>
|
|
<span class="n">api_error</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">win_error</span><span class="o">.</span><span class="n">winerror</span><span class="p">,</span> <span class="n">win_error</span><span class="o">.</span><span class="n">strerror</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">api_error</span>
|
|
|
|
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="s2">"</span><span class="si">{0}</span><span class="s2">: </span><span class="si">{1}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">api_name</span><span class="p">,</span> <span class="nb">super</span><span class="p">(</span><span class="n">Kernel32Error</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">())</span>
|
|
|
|
<span class="k">def</span> <span class="nf">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="s2">"</span><span class="si">{0}</span><span class="s2">: </span><span class="si">{1}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">api_name</span><span class="p">,</span> <span class="nb">super</span><span class="p">(</span><span class="n">Kernel32Error</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__str__</span><span class="p">())</span></div>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">IphlpapiError</span><span class="p">(</span><span class="n">Kernel32Error</span><span class="p">):</span>
|
|
|
|
<span class="k">def</span> <span class="nf">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">strerror</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="n">win_error</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WinError</span><span class="p">(</span><span class="n">code</span><span class="p">)</span>
|
|
<span class="n">api_error</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">Kernel32Error</span><span class="p">,</span> <span class="bp">cls</span><span class="p">)</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">)</span>
|
|
<span class="n">api_error</span><span class="o">.</span><span class="n">api_name</span> <span class="o">=</span> <span class="n">func_name</span>
|
|
<span class="n">api_error</span><span class="o">.</span><span class="n">winerror</span> <span class="o">=</span> <span class="n">win_error</span><span class="o">.</span><span class="n">winerror</span>
|
|
<span class="k">if</span> <span class="n">strerror</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">api_error</span><span class="o">.</span><span class="n">strerror</span> <span class="o">=</span> <span class="n">strerror</span>
|
|
<span class="k">else</span><span class="p">:</span>
|
|
<span class="n">api_error</span><span class="o">.</span><span class="n">strerror</span> <span class="o">=</span> <span class="n">win_error</span><span class="o">.</span><span class="n">strerror</span>
|
|
<span class="n">api_error</span><span class="o">.</span><span class="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">api_error</span><span class="o">.</span><span class="n">winerror</span><span class="p">,</span> <span class="n">api_error</span><span class="o">.</span><span class="n">strerror</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">api_error</span>
|
|
|
|
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">code</span><span class="p">,</span> <span class="n">strerror</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">pass</span>
|
|
|
|
|
|
<span class="c1"># Error check method</span>
|
|
<span class="k">def</span> <span class="nf">no_error_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="sd">"""Nothing special"""</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">minus_one_error_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">Kernel32Error</span><span class="p">(</span><span class="n">func_name</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">zero_is_fail_error_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="sd">"""raise Kernel32Error if result is 0"""</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">result</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">Kernel32Error</span><span class="p">(</span><span class="n">func_name</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">should_return_zero_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="sd">"""raise Kernel32Error if result is NOT 0"""</span>
|
|
<span class="k">if</span> <span class="n">result</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">Kernel32Error</span><span class="p">(</span><span class="n">func_name</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">iphlpapi_error_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="sd">"""raise IphlpapiError if result is NOT 0"""</span>
|
|
<span class="k">if</span> <span class="n">result</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">IphlpapiError</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">error_ntstatus</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">result</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">NtStatusException</span><span class="p">(</span><span class="n">result</span> <span class="o">&</span> <span class="mh">0xffffffff</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
|
|
<span class="k">def</span> <span class="nf">valid_handle_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">INVALID_HANDLE_VALUE</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">Kernel32Error</span><span class="p">(</span><span class="n">func_name</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">ExportNotFound</span><span class="p">(</span><span class="ne">RuntimeError</span><span class="p">):</span>
|
|
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">api_name</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">func_name</span> <span class="o">=</span> <span class="n">func_name</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">api_name</span> <span class="o">=</span> <span class="n">api_name</span>
|
|
<span class="nb">super</span><span class="p">(</span><span class="n">ExportNotFound</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__init__</span><span class="p">(</span><span class="s2">"Function </span><span class="si">{0}</span><span class="s2"> not found into </span><span class="si">{1}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">api_name</span><span class="p">))</span>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">ApiProxy</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="kc">None</span>
|
|
<span class="sd">"""Create a python wrapper around a kernel32 function"""</span>
|
|
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">deffunc_module</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">deffunc_module</span> <span class="o">=</span> <span class="n">deffunc_module</span> <span class="k">if</span> <span class="n">deffunc_module</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">winfuncs</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">func_name</span> <span class="o">=</span> <span class="n">func_name</span>
|
|
<span class="k">if</span> <span class="n">error_check</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">error_check</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_error_check</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">error_check</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">wraps</span><span class="p">(</span><span class="n">error_check</span><span class="p">)(</span><span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span><span class="n">error_check</span><span class="p">,</span> <span class="n">func_name</span><span class="p">))</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_cprototyped</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">python_proxy</span><span class="p">,</span> <span class="p">):</span>
|
|
<span class="n">prototype</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deffunc_module</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func_name</span> <span class="o">+</span> <span class="s2">"Prototype"</span><span class="p">)</span>
|
|
<span class="n">params</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">deffunc_module</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">func_name</span> <span class="o">+</span> <span class="s2">"Params"</span><span class="p">)</span>
|
|
<span class="n">python_proxy</span><span class="o">.</span><span class="n">prototype</span> <span class="o">=</span> <span class="n">prototype</span>
|
|
<span class="n">python_proxy</span><span class="o">.</span><span class="n">params</span> <span class="o">=</span> <span class="n">params</span>
|
|
<span class="n">python_proxy</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_check</span>
|
|
<span class="n">python_proxy</span><span class="o">.</span><span class="n">target_dll</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">APIDLL</span>
|
|
<span class="n">python_proxy</span><span class="o">.</span><span class="n">target_func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func_name</span>
|
|
<span class="c1"># Give access to the 'ApiProxy' object from the function</span>
|
|
<span class="n">python_proxy</span><span class="o">.</span><span class="n">proxy</span> <span class="o">=</span> <span class="bp">self</span>
|
|
<span class="n">params_name</span> <span class="o">=</span> <span class="p">[</span><span class="n">param</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="k">for</span> <span class="n">param</span> <span class="ow">in</span> <span class="n">params</span><span class="p">]</span>
|
|
<span class="k">if</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_check</span><span class="o">.</span><span class="vm">__doc__</span><span class="p">):</span>
|
|
<span class="n">doc</span> <span class="o">=</span> <span class="n">python_proxy</span><span class="o">.</span><span class="vm">__doc__</span>
|
|
<span class="n">doc</span> <span class="o">=</span> <span class="n">doc</span> <span class="k">if</span> <span class="n">doc</span> <span class="k">else</span> <span class="s2">""</span>
|
|
<span class="n">python_proxy</span><span class="o">.</span><span class="vm">__doc__</span> <span class="o">=</span> <span class="n">doc</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">Errcheck:</span><span class="se">\n</span><span class="s2"> "</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_check</span><span class="o">.</span><span class="vm">__doc__</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">generate_ctypes_function</span><span class="p">():</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">c_prototyped</span> <span class="o">=</span> <span class="n">prototype</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">func_name</span><span class="p">,</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">windll</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">APIDLL</span><span class="p">)),</span> <span class="n">params</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="p">(</span><span class="ne">AttributeError</span><span class="p">,</span> <span class="ne">WindowsError</span><span class="p">):</span>
|
|
<span class="k">raise</span> <span class="n">ExportNotFound</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">func_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">APIDLL</span><span class="p">)</span>
|
|
<span class="n">c_prototyped</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">error_check</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_cprototyped</span> <span class="o">=</span> <span class="n">c_prototyped</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">perform_call</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">params_name</span><span class="p">)</span> <span class="o">!=</span> <span class="nb">len</span><span class="p">(</span><span class="n">args</span><span class="p">):</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"ERROR:"</span><span class="p">)</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Expected params: </span><span class="si">{0}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">params_name</span><span class="p">))</span>
|
|
<span class="nb">print</span><span class="p">(</span><span class="s2">"Just Got params: </span><span class="si">{0}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">args</span><span class="p">))</span>
|
|
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"I do not have all parameters: how is that possible ?"</span><span class="p">)</span>
|
|
<span class="k">for</span> <span class="n">param_name</span><span class="p">,</span> <span class="n">param_value</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">params_name</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">param_value</span> <span class="ow">is</span> <span class="n">NeededParameter</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">"</span><span class="si">{0}</span><span class="s2">: Missing Mandatory parameter <</span><span class="si">{1}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">func_name</span><span class="p">,</span> <span class="n">param_name</span><span class="p">))</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cprototyped</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">generate_ctypes_function</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_cprototyped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
|
|
|
|
<span class="nb">setattr</span><span class="p">(</span><span class="n">python_proxy</span><span class="p">,</span> <span class="s2">"ctypes_function"</span><span class="p">,</span> <span class="n">perform_call</span><span class="p">)</span>
|
|
<span class="nb">setattr</span><span class="p">(</span><span class="n">python_proxy</span><span class="p">,</span> <span class="s2">"force_resolution"</span><span class="p">,</span> <span class="n">generate_ctypes_function</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">python_proxy</span>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">Kernel32Proxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"kernel32"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">Advapi32Proxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"advapi32"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">IphlpapiProxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"iphlpapi"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">iphlpapi_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">NtdllProxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"ntdll"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">should_return_zero_check</span><span class="p">)</span> <span class="c1"># Setup to: error_ntstatus ?</span>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">WinTrustProxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"wintrust"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">no_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">Ole32Proxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"ole32"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">no_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">PsapiProxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"psapi"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">User32Proxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"user32"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">VersionProxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"version"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">Crypt32Proxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"crypt32"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">CryptUIProxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"cryptui"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">Shell32Proxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"shell32"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">Ktmw32Proxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"Ktmw32"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">WevtapiProxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"Wevtapi"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">ShlwapiProxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"Shlwapi"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
|
|
<span class="k">class</span> <span class="nc">OleaccProxy</span><span class="p">(</span><span class="n">ApiProxy</span><span class="p">):</span>
|
|
<span class="n">APIDLL</span> <span class="o">=</span> <span class="s2">"Oleacc"</span>
|
|
<span class="n">default_error_check</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1">#class OptionalExport(object):</span>
|
|
<span class="c1"># """used 'around' a Proxy decorator</span>
|
|
<span class="c1"># Should be used for export that are not available everywhere (ntdll internals | 32/64 bits stuff)</span>
|
|
<span class="c1"># If the export is not found the function will be None</span>
|
|
<span class="c1">#</span>
|
|
<span class="c1"># Example:</span>
|
|
<span class="c1"># @OptionalExport(NtdllProxy('NtWow64ReadVirtualMemory64'))</span>
|
|
<span class="c1"># def NtWow64ReadVirtualMemory64(...)</span>
|
|
<span class="c1"># ...</span>
|
|
<span class="c1"># """</span>
|
|
<span class="c1"># def __init__(self, subdecorator):</span>
|
|
<span class="c1"># self.subdecorator = subdecorator</span>
|
|
<span class="c1">#</span>
|
|
<span class="c1"># def __call__(self, f):</span>
|
|
<span class="c1"># try:</span>
|
|
<span class="c1"># x = self.subdecorator(f)</span>
|
|
<span class="c1"># x.force_resolution()</span>
|
|
<span class="c1"># return x</span>
|
|
<span class="c1"># except ExportNotFound as e:</span>
|
|
<span class="c1"># dbgprint("Export <{e.func_name}> not found in <{e.api_name}>".format(e=e), "EXPORTNOTFOUND")</span>
|
|
<span class="c1"># return None</span>
|
|
|
|
<span class="k">class</span> <span class="nc">TransparentApiProxy</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
|
<span class="k">def</span> <span class="nf">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">DLLNAME</span><span class="p">,</span> <span class="n">target_func</span><span class="p">,</span> <span class="n">error_check</span><span class="p">):</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">target_dll</span> <span class="o">=</span> <span class="n">DLLNAME</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">target_func</span> <span class="o">=</span> <span class="n">target_func</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">error_check</span> <span class="o">=</span> <span class="n">error_check</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_ctypes_function</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">prototype</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">winfuncs</span><span class="p">,</span> <span class="n">target_func</span> <span class="o">+</span> <span class="s2">"Prototype"</span><span class="p">)</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">params</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">winfuncs</span><span class="p">,</span> <span class="n">target_func</span> <span class="o">+</span> <span class="s2">"Params"</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span> <span class="nf">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ctypes_function</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">force_resolution</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_ctypes_function</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span> <span class="nf">force_resolution</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="k">try</span><span class="p">:</span>
|
|
<span class="n">c_prototyped</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">prototype</span><span class="p">((</span><span class="bp">self</span><span class="o">.</span><span class="n">target_func</span><span class="p">,</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">windll</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">target_dll</span><span class="p">)),</span> <span class="bp">self</span><span class="o">.</span><span class="n">params</span><span class="p">)</span>
|
|
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">ExportNotFound</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">target_func</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">target_dll</span><span class="p">)</span>
|
|
<span class="n">c_prototyped</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="n">functools</span><span class="o">.</span><span class="n">wraps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_check</span><span class="p">)(</span><span class="n">functools</span><span class="o">.</span><span class="n">partial</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">error_check</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">target_func</span><span class="p">))</span>
|
|
<span class="bp">self</span><span class="o">.</span><span class="n">_ctypes_function</span> <span class="o">=</span> <span class="n">c_prototyped</span>
|
|
|
|
|
|
<span class="n">TransparentKernel32Proxy</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">zero_is_fail_error_check</span><span class="p">:</span> <span class="n">TransparentApiProxy</span><span class="p">(</span><span class="s2">"kernel32"</span><span class="p">,</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">error_check</span><span class="p">)</span>
|
|
<span class="n">TransparentUser32Proxy</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">zero_is_fail_error_check</span><span class="p">:</span> <span class="n">TransparentApiProxy</span><span class="p">(</span><span class="s2">"user32"</span><span class="p">,</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">error_check</span><span class="p">)</span>
|
|
<span class="n">TransparentAdvapi32Proxy</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">zero_is_fail_error_check</span><span class="p">:</span> <span class="n">TransparentApiProxy</span><span class="p">(</span><span class="s2">"advapi32"</span><span class="p">,</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">error_check</span><span class="p">)</span>
|
|
<span class="n">TransparentIphlpapiProxy</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">iphlpapi_error_check</span><span class="p">:</span> <span class="n">TransparentApiProxy</span><span class="p">(</span><span class="s2">"iphlpapi"</span><span class="p">,</span> <span class="n">func_name</span><span class="p">,</span> <span class="n">error_check</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">class</span> <span class="nc">NeededParameterType</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
|
<span class="n">_inst</span> <span class="o">=</span> <span class="kc">None</span>
|
|
|
|
<span class="k">def</span> <span class="nf">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_inst</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="bp">cls</span><span class="o">.</span><span class="n">_inst</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">NeededParameterType</span><span class="p">,</span> <span class="bp">cls</span><span class="p">)</span><span class="o">.</span><span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="bp">cls</span><span class="o">.</span><span class="n">_inst</span>
|
|
|
|
<span class="k">def</span> <span class="nf">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="s2">"NeededParameter"</span>
|
|
<span class="n">NeededParameter</span> <span class="o">=</span> <span class="n">NeededParameterType</span><span class="p">()</span>
|
|
|
|
<span class="n">ExitProcess</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"ExitProcess"</span><span class="p">)</span>
|
|
<span class="n">TerminateProcess</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"TerminateProcess"</span><span class="p">)</span>
|
|
<span class="n">CloseHandle</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"CloseHandle"</span><span class="p">)</span>
|
|
<span class="n">GetProcAddress</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetProcAddress"</span><span class="p">)</span>
|
|
<span class="n">LoadLibraryA</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"LoadLibraryA"</span><span class="p">)</span>
|
|
<span class="n">LoadLibraryW</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"LoadLibraryW"</span><span class="p">)</span>
|
|
<span class="n">GetLastError</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetLastError"</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="n">GetCurrentProcess</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetCurrentProcess"</span><span class="p">)</span>
|
|
<span class="n">GetCurrentProcessorNumber</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetCurrentProcessorNumber"</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="n">GetCurrentThread</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetCurrentThread"</span><span class="p">)</span>
|
|
<span class="n">AllocConsole</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"AllocConsole"</span><span class="p">)</span>
|
|
<span class="n">FreeConsole</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"FreeConsole"</span><span class="p">)</span>
|
|
<span class="n">GetStdHandle</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetStdHandle"</span><span class="p">)</span>
|
|
<span class="n">SetStdHandle</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"SetStdHandle"</span><span class="p">)</span>
|
|
<span class="n">GetCurrentThreadId</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetCurrentThreadId"</span><span class="p">)</span>
|
|
<span class="n">TerminateThread</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"TerminateThread"</span><span class="p">)</span>
|
|
<span class="n">ExitThread</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"ExitThread"</span><span class="p">)</span>
|
|
<span class="n">SuspendThread</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"SuspendThread"</span><span class="p">,</span> <span class="n">minus_one_error_check</span><span class="p">)</span>
|
|
<span class="n">ResumeThread</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"ResumeThread"</span><span class="p">,</span> <span class="n">minus_one_error_check</span><span class="p">)</span>
|
|
<span class="n">GetThreadId</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetThreadId"</span><span class="p">)</span>
|
|
<span class="n">VirtualQueryEx</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"VirtualQueryEx"</span><span class="p">)</span>
|
|
<span class="n">GetExitCodeThread</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetExitCodeThread"</span><span class="p">)</span>
|
|
<span class="n">GetExitCodeProcess</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetExitCodeProcess"</span><span class="p">)</span>
|
|
<span class="n">GetProcessId</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetProcessId"</span><span class="p">)</span>
|
|
<span class="n">lstrcmpA</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"lstrcmpA"</span><span class="p">)</span>
|
|
<span class="n">lstrcmpW</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"lstrcmpW"</span><span class="p">)</span>
|
|
<span class="n">GetVersionExA</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetVersionExA"</span><span class="p">)</span>
|
|
<span class="n">GetVersionExW</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetVersionExW"</span><span class="p">)</span>
|
|
<span class="n">GetComputerNameA</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetComputerNameA"</span><span class="p">)</span>
|
|
<span class="n">GetComputerNameW</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetComputerNameW"</span><span class="p">)</span>
|
|
<span class="n">LocalFree</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"LocalFree"</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
|
|
|
|
<span class="n">Wow64DisableWow64FsRedirection</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"Wow64DisableWow64FsRedirection"</span><span class="p">)</span>
|
|
<span class="n">Wow64RevertWow64FsRedirection</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"Wow64RevertWow64FsRedirection"</span><span class="p">)</span>
|
|
<span class="n">Wow64EnableWow64FsRedirection</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"Wow64EnableWow64FsRedirection"</span><span class="p">)</span>
|
|
<span class="n">Wow64GetThreadContext</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"Wow64GetThreadContext"</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">CreateFile_error_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="sd">"""raise Kernel32Error if result is NOT 0"""</span>
|
|
<span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">INVALID_HANDLE_VALUE</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">Kernel32Error</span><span class="p">(</span><span class="n">func_name</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateFileA"</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">CreateFile_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateFileA</span><span class="p">(</span><span class="n">lpFileName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="o">=</span><span class="n">GENERIC_READ</span><span class="p">,</span> <span class="n">dwShareMode</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwCreationDisposition</span><span class="o">=</span><span class="n">OPEN_EXISTING</span><span class="p">,</span> <span class="n">dwFlagsAndAttributes</span><span class="o">=</span><span class="n">FILE_ATTRIBUTE_NORMAL</span><span class="p">,</span> <span class="n">hTemplateFile</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateFileA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpFileName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">dwShareMode</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">,</span> <span class="n">dwCreationDisposition</span><span class="p">,</span> <span class="n">dwFlagsAndAttributes</span><span class="p">,</span> <span class="n">hTemplateFile</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateFileW"</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">CreateFile_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateFileW</span><span class="p">(</span><span class="n">lpFileName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="o">=</span><span class="n">GENERIC_READ</span><span class="p">,</span> <span class="n">dwShareMode</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwCreationDisposition</span><span class="o">=</span><span class="n">OPEN_EXISTING</span><span class="p">,</span> <span class="n">dwFlagsAndAttributes</span><span class="o">=</span><span class="n">FILE_ATTRIBUTE_NORMAL</span><span class="p">,</span> <span class="n">hTemplateFile</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateFileA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpFileName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">dwShareMode</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">,</span> <span class="n">dwCreationDisposition</span><span class="p">,</span> <span class="n">dwFlagsAndAttributes</span><span class="p">,</span> <span class="n">hTemplateFile</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"VirtualAlloc"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">VirtualAlloc</span><span class="p">(</span><span class="n">lpAddress</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwSize</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">flAllocationType</span><span class="o">=</span><span class="n">MEM_COMMIT</span><span class="p">,</span> <span class="n">flProtect</span><span class="o">=</span><span class="n">PAGE_EXECUTE_READWRITE</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">VirtualAlloc</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="p">,</span> <span class="n">flAllocationType</span><span class="p">,</span> <span class="n">flProtect</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"VirtualFree"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">VirtualFree</span><span class="p">(</span><span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwFreeType</span><span class="o">=</span><span class="n">MEM_RELEASE</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">VirtualFree</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="p">,</span> <span class="n">dwFreeType</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"VirtualAllocEx"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">VirtualAllocEx</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpAddress</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwSize</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">flAllocationType</span><span class="o">=</span><span class="n">MEM_COMMIT</span><span class="p">,</span> <span class="n">flProtect</span><span class="o">=</span><span class="n">PAGE_EXECUTE_READWRITE</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">VirtualAllocEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="p">,</span> <span class="n">flAllocationType</span><span class="p">,</span> <span class="n">flProtect</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"VirtualFreeEx"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">VirtualFreeEx</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwFreeType</span><span class="o">=</span><span class="n">MEM_RELEASE</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">VirtualFreeEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="p">,</span> <span class="n">dwFreeType</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateThread"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateThread</span><span class="p">(</span><span class="n">lpThreadAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwStackSize</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpStartAddress</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpParameter</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpThreadId</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateThread</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpThreadAttributes</span><span class="p">,</span> <span class="n">dwStackSize</span><span class="p">,</span> <span class="n">lpStartAddress</span><span class="p">,</span> <span class="n">lpParameter</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="p">,</span> <span class="n">lpThreadId</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateRemoteThread"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateRemoteThread</span><span class="p">(</span><span class="n">hProcess</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwStackSize</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span>
|
|
<span class="n">lpStartAddress</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpParameter</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpThreadId</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateRemoteThread</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="p">,</span> <span class="n">dwStackSize</span><span class="p">,</span> <span class="n">lpStartAddress</span><span class="p">,</span> <span class="n">lpParameter</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="p">,</span> <span class="n">lpThreadId</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"VirtualProtect"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">VirtualProtect</span><span class="p">(</span><span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="p">,</span> <span class="n">flNewProtect</span><span class="p">,</span> <span class="n">lpflOldProtect</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">lpflOldProtect</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">lpflOldProtect</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">DWORD</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">VirtualProtect</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="p">,</span> <span class="n">flNewProtect</span><span class="p">,</span> <span class="n">lpflOldProtect</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"VirtualProtectEx"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">VirtualProtectEx</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="p">,</span> <span class="n">flNewProtect</span><span class="p">,</span> <span class="n">lpflOldProtect</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">lpflOldProtect</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">lpflOldProtect</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">DWORD</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">VirtualProtectEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpAddress</span><span class="p">,</span> <span class="n">dwSize</span><span class="p">,</span> <span class="n">flNewProtect</span><span class="p">,</span> <span class="n">lpflOldProtect</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateProcessA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateProcessA</span><span class="p">(</span><span class="n">lpApplicationName</span><span class="p">,</span> <span class="n">lpCommandLine</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpProcessAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">bInheritHandles</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="n">dwCreationFlags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpEnvironment</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpCurrentDirectory</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpStartupInfo</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpProcessInformation</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">lpStartupInfo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">StartupInfo</span> <span class="o">=</span> <span class="n">STARTUPINFOA</span><span class="p">()</span>
|
|
<span class="n">StartupInfo</span><span class="o">.</span><span class="n">cb</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">StartupInfo</span><span class="p">)</span>
|
|
<span class="n">StartupInfo</span><span class="o">.</span><span class="n">dwFlags</span> <span class="o">=</span> <span class="n">STARTF_USESHOWWINDOW</span>
|
|
<span class="n">StartupInfo</span><span class="o">.</span><span class="n">wShowWindow</span> <span class="o">=</span> <span class="n">SW_HIDE</span>
|
|
<span class="n">lpStartupInfo</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">StartupInfo</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">lpProcessInformation</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">lpProcessInformation</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">PROCESS_INFORMATION</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">CreateProcessA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpApplicationName</span><span class="p">,</span> <span class="n">lpCommandLine</span><span class="p">,</span> <span class="n">lpProcessAttributes</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="p">,</span> <span class="n">bInheritHandles</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="p">,</span> <span class="n">lpEnvironment</span><span class="p">,</span> <span class="n">lpCurrentDirectory</span><span class="p">,</span> <span class="n">lpStartupInfo</span><span class="p">,</span> <span class="n">lpProcessInformation</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateProcessW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateProcessW</span><span class="p">(</span><span class="n">lpApplicationName</span><span class="p">,</span> <span class="n">lpCommandLine</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpProcessAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">bInheritHandles</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
|
<span class="n">dwCreationFlags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpEnvironment</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpCurrentDirectory</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpStartupInfo</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpProcessInformation</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">lpStartupInfo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">StartupInfo</span> <span class="o">=</span> <span class="n">STARTUPINFOW</span><span class="p">()</span>
|
|
<span class="n">StartupInfo</span><span class="o">.</span><span class="n">cb</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">StartupInfo</span><span class="p">)</span>
|
|
<span class="n">StartupInfo</span><span class="o">.</span><span class="n">dwFlags</span> <span class="o">=</span> <span class="n">STARTF_USESHOWWINDOW</span>
|
|
<span class="n">StartupInfo</span><span class="o">.</span><span class="n">wShowWindow</span> <span class="o">=</span> <span class="n">SW_HIDE</span>
|
|
<span class="n">lpStartupInfo</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">StartupInfo</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">lpProcessInformation</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">lpProcessInformation</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">PROCESS_INFORMATION</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">CreateProcessW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpApplicationName</span><span class="p">,</span> <span class="n">lpCommandLine</span><span class="p">,</span> <span class="n">lpProcessAttributes</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="p">,</span> <span class="n">bInheritHandles</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="p">,</span> <span class="n">lpEnvironment</span><span class="p">,</span> <span class="n">lpCurrentDirectory</span><span class="p">,</span> <span class="n">lpStartupInfo</span><span class="p">,</span> <span class="n">lpProcessInformation</span><span class="p">)</span>
|
|
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetThreadContext"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetThreadContext</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">lpContext</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">Context</span> <span class="o">=</span> <span class="n">CONTEXT</span><span class="p">()</span>
|
|
<span class="n">context</span><span class="o">.</span><span class="n">ContextFlags</span> <span class="o">=</span> <span class="n">CONTEXT_FULL</span> <span class="o">|</span> <span class="n">CONTEXT_DEBUG_REGISTERS</span>
|
|
<span class="n">lpContext</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">Context</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetThreadContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"SetThreadContext"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">SetThreadContext</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">SetThreadContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"Wow64SetThreadContext"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">Wow64SetThreadContext</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">Wow64SetThreadContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"OpenThread"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenThread</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="o">=</span><span class="n">THREAD_ALL_ACCESS</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwThreadId</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenThread</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="p">,</span> <span class="n">dwThreadId</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"OpenProcess"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenProcess</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="o">=</span><span class="n">PROCESS_ALL_ACCESS</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwProcessId</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenProcess</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="p">,</span> <span class="n">dwProcessId</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"ReadProcessMemory"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ReadProcessMemory</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="p">,</span> <span class="n">lpNumberOfBytesRead</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ReadProcessMemory</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="p">,</span> <span class="n">lpNumberOfBytesRead</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"WriteProcessMemory"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">WriteProcessMemory</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpNumberOfBytesWritten</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="sd">"""Computer nSize with len(lpBuffer) if not given"""</span>
|
|
<span class="k">if</span> <span class="n">nSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">WriteProcessMemory</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="p">,</span> <span class="n">lpNumberOfBytesWritten</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetProcessTimes"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetProcessTimes</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpCreationTime</span><span class="p">,</span> <span class="n">lpExitTime</span><span class="p">,</span> <span class="n">lpKernelTime</span><span class="p">,</span> <span class="n">lpUserTime</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetProcessTimes</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpCreationTime</span><span class="p">,</span> <span class="n">lpExitTime</span><span class="p">,</span> <span class="n">lpKernelTime</span><span class="p">,</span> <span class="n">lpUserTime</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s1">'SetThreadAffinityMask'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">SetThreadAffinityMask</span><span class="p">(</span><span class="n">hThread</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwThreadAffinityMask</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="sd">"""If hThread is not given, it will be the current thread"""</span>
|
|
<span class="k">if</span> <span class="n">hThread</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">hThread</span> <span class="o">=</span> <span class="n">GetCurrentThread</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="n">SetThreadAffinityMask</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">dwThreadAffinityMask</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateToolhelp32Snapshot"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateToolhelp32Snapshot</span><span class="p">(</span><span class="n">dwFlags</span><span class="p">,</span> <span class="n">th32ProcessID</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateToolhelp32Snapshot</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwFlags</span><span class="p">,</span> <span class="n">th32ProcessID</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"Thread32First"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">Thread32First</span><span class="p">(</span><span class="n">hSnapshot</span><span class="p">,</span> <span class="n">lpte</span><span class="p">):</span>
|
|
<span class="sd">"""Set byref(lpte) if needed"""</span>
|
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">lpte</span><span class="p">)</span> <span class="o">==</span> <span class="n">THREADENTRY32</span><span class="p">:</span>
|
|
<span class="n">lpte</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">lpte</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">Thread32First</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSnapshot</span><span class="p">,</span> <span class="n">lpte</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"Thread32Next"</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">Thread32Next</span><span class="p">(</span><span class="n">hSnapshot</span><span class="p">,</span> <span class="n">lpte</span><span class="p">):</span>
|
|
<span class="sd">"""Set byref(lpte) if needed"""</span>
|
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">lpte</span><span class="p">)</span> <span class="o">==</span> <span class="n">THREADENTRY32</span><span class="p">:</span>
|
|
<span class="n">lpte</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">lpte</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">Thread32Next</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSnapshot</span><span class="p">,</span> <span class="n">lpte</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"Process32First"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">Process32First</span><span class="p">(</span><span class="n">hSnapshot</span><span class="p">,</span> <span class="n">lpte</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">Process32First</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSnapshot</span><span class="p">,</span> <span class="n">lpte</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"Process32Next"</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">Process32Next</span><span class="p">(</span><span class="n">hSnapshot</span><span class="p">,</span> <span class="n">lpte</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">Process32Next</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSnapshot</span><span class="p">,</span> <span class="n">lpte</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetPriorityClass"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetPriorityClass</span><span class="p">(</span><span class="n">hProcess</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetPriorityClass</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"SetPriorityClass"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">SetPriorityClass</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">dwPriorityClass</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">SetPriorityClass</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">dwPriorityClass</span><span class="p">)</span>
|
|
|
|
<span class="n">PROCESS_MITIGATION_STUCTS</span> <span class="o">=</span> <span class="p">(</span><span class="n">PROCESS_MITIGATION_ASLR_POLICY</span><span class="p">,</span>
|
|
<span class="n">PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY</span><span class="p">,</span>
|
|
<span class="n">PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY</span><span class="p">,</span>
|
|
<span class="n">PROCESS_MITIGATION_DEP_POLICY</span><span class="p">,</span>
|
|
<span class="n">PROCESS_MITIGATION_DYNAMIC_CODE_POLICY</span><span class="p">,</span>
|
|
<span class="n">PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY</span><span class="p">,</span>
|
|
<span class="n">PROCESS_MITIGATION_IMAGE_LOAD_POLICY</span><span class="p">,</span>
|
|
<span class="n">PROCESS_MITIGATION_POLICY</span><span class="p">,</span>
|
|
<span class="n">PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY</span><span class="p">,</span>
|
|
<span class="n">PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetProcessMitigationPolicy"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetProcessMitigationPolicy</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">MitigationPolicy</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">dwLength</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">dwLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">dwLength</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetProcessMitigationPolicy</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">MitigationPolicy</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">dwLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"SetProcessMitigationPolicy"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">SetProcessMitigationPolicy</span><span class="p">(</span><span class="n">MitigationPolicy</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">dwLength</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">dwLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">dwLength</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">,</span> <span class="n">PROCESS_MITIGATION_STUCTS</span><span class="p">):</span>
|
|
<span class="n">lpBuffer</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">SetProcessMitigationPolicy</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">MitigationPolicy</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">dwLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"OpenEventA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenEventA</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="p">,</span> <span class="n">lpName</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenEventA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="p">,</span> <span class="n">lpName</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"OpenEventW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenEventW</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="p">,</span> <span class="n">lpName</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenEventA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="p">,</span> <span class="n">lpName</span><span class="p">)</span>
|
|
|
|
|
|
|
|
|
|
|
|
<span class="c1"># File stuff</span>
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"ReadFile"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ReadFile</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nNumberOfBytesToRead</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpNumberOfBytesRead</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpOverlapped</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nNumberOfBytesToRead</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nNumberOfBytesToRead</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">lpOverlapped</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">lpNumberOfBytesRead</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">lpNumberOfBytesRead</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">DWORD</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">ReadFile</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nNumberOfBytesToRead</span><span class="p">,</span> <span class="n">lpNumberOfBytesRead</span><span class="p">,</span> <span class="n">lpOverlapped</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"WriteFile"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">WriteFile</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nNumberOfBytesToWrite</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpNumberOfBytesWritten</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpOverlapped</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nNumberOfBytesToWrite</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nNumberOfBytesToWrite</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">lpOverlapped</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">lpNumberOfBytesWritten</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">lpNumberOfBytesWritten</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">DWORD</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">WriteFile</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nNumberOfBytesToWrite</span><span class="p">,</span> <span class="n">lpNumberOfBytesWritten</span><span class="p">,</span> <span class="n">lpOverlapped</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"Sleep"</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">Sleep</span><span class="p">(</span><span class="n">dwMilliseconds</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">Sleep</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwMilliseconds</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"SleepEx"</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">SleepEx</span><span class="p">(</span><span class="n">dwMilliseconds</span><span class="p">,</span> <span class="n">bAlertable</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">SleepEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwMilliseconds</span><span class="p">,</span> <span class="n">bAlertable</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Exception stuff</span>
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"AddVectoredContinueHandler"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">AddVectoredContinueHandler</span><span class="p">(</span><span class="n">FirstHandler</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">VectoredHandler</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">AddVectoredContinueHandler</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">FirstHandler</span><span class="p">,</span> <span class="n">VectoredHandler</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"AddVectoredExceptionHandler"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">AddVectoredExceptionHandler</span><span class="p">(</span><span class="n">FirstHandler</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">VectoredHandler</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">AddVectoredExceptionHandler</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">FirstHandler</span><span class="p">,</span> <span class="n">VectoredHandler</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"RemoveVectoredExceptionHandler"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RemoveVectoredExceptionHandler</span><span class="p">(</span><span class="n">Handler</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RemoveVectoredExceptionHandler</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Handler</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"WaitForSingleObject"</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">WaitForSingleObject</span><span class="p">(</span><span class="n">hHandle</span><span class="p">,</span> <span class="n">dwMilliseconds</span><span class="o">=</span><span class="n">INFINITE</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">WaitForSingleObject</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hHandle</span><span class="p">,</span> <span class="n">dwMilliseconds</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"DeviceIoControl"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">DeviceIoControl</span><span class="p">(</span><span class="n">hDevice</span><span class="p">,</span> <span class="n">dwIoControlCode</span><span class="p">,</span> <span class="n">lpInBuffer</span><span class="p">,</span> <span class="n">nInBufferSize</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpOutBuffer</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">nOutBufferSize</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpBytesReturned</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpOverlapped</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nInBufferSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nInBufferSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpInBuffer</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">nOutBufferSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nOutBufferSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpOutBuffer</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">lpBytesReturned</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="c1"># Some windows check 0 / others does not</span>
|
|
<span class="n">lpBytesReturned</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">DWORD</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">DeviceIoControl</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hDevice</span><span class="p">,</span> <span class="n">dwIoControlCode</span><span class="p">,</span> <span class="n">lpInBuffer</span><span class="p">,</span> <span class="n">nInBufferSize</span><span class="p">,</span> <span class="n">lpOutBuffer</span><span class="p">,</span> <span class="n">nOutBufferSize</span><span class="p">,</span> <span class="n">lpBytesReturned</span><span class="p">,</span> <span class="n">lpOverlapped</span><span class="p">)</span>
|
|
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateFileMappingA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateFileMappingA</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">lpFileMappingAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">flProtect</span><span class="o">=</span><span class="n">PAGE_READWRITE</span><span class="p">,</span> <span class="n">dwMaximumSizeHigh</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwMaximumSizeLow</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpName</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateFileMappingA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">lpFileMappingAttributes</span><span class="p">,</span> <span class="n">flProtect</span><span class="p">,</span> <span class="n">dwMaximumSizeHigh</span><span class="p">,</span> <span class="n">dwMaximumSizeLow</span><span class="p">,</span> <span class="n">lpName</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateFileMappingW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateFileMappingW</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">lpFileMappingAttributes</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">flProtect</span><span class="o">=</span><span class="n">PAGE_READWRITE</span><span class="p">,</span> <span class="n">dwMaximumSizeHigh</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwMaximumSizeLow</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpName</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateFileMappingW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">lpFileMappingAttributes</span><span class="p">,</span> <span class="n">flProtect</span><span class="p">,</span> <span class="n">dwMaximumSizeHigh</span><span class="p">,</span> <span class="n">dwMaximumSizeLow</span><span class="p">,</span> <span class="n">lpName</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"MapViewOfFile"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">MapViewOfFile</span><span class="p">(</span><span class="n">hFileMappingObject</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="o">=</span><span class="n">FILE_MAP_ALL_ACCESS</span><span class="p">,</span> <span class="n">dwFileOffsetHigh</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwFileOffsetLow</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwNumberOfBytesToMap</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">MapViewOfFile</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hFileMappingObject</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">dwFileOffsetHigh</span><span class="p">,</span> <span class="n">dwFileOffsetLow</span><span class="p">,</span> <span class="n">dwNumberOfBytesToMap</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"DuplicateHandle"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">DuplicateHandle</span><span class="p">(</span><span class="n">hSourceProcessHandle</span><span class="p">,</span> <span class="n">hSourceHandle</span><span class="p">,</span> <span class="n">hTargetProcessHandle</span><span class="p">,</span> <span class="n">lpTargetHandle</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">dwOptions</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">DuplicateHandle</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSourceProcessHandle</span><span class="p">,</span> <span class="n">hSourceHandle</span><span class="p">,</span> <span class="n">hTargetProcessHandle</span><span class="p">,</span> <span class="n">lpTargetHandle</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">bInheritHandle</span><span class="p">,</span> <span class="n">dwOptions</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetLongPathNameA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetLongPathNameA</span><span class="p">(</span><span class="n">lpszShortPath</span><span class="p">,</span> <span class="n">lpszLongPath</span><span class="p">,</span> <span class="n">cchBuffer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchBuffer</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchBuffer</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpszLongPath</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetLongPathNameA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpszShortPath</span><span class="p">,</span> <span class="n">lpszLongPath</span><span class="p">,</span> <span class="n">cchBuffer</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetLongPathNameW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetLongPathNameW</span><span class="p">(</span><span class="n">lpszShortPath</span><span class="p">,</span> <span class="n">lpszLongPath</span><span class="p">,</span> <span class="n">cchBuffer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchBuffer</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchBuffer</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpszLongPath</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetLongPathNameW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpszShortPath</span><span class="p">,</span> <span class="n">lpszLongPath</span><span class="p">,</span> <span class="n">cchBuffer</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetShortPathNameA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetShortPathNameA</span><span class="p">(</span><span class="n">lpszLongPath</span><span class="p">,</span> <span class="n">lpszShortPath</span><span class="p">,</span> <span class="n">cchBuffer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchBuffer</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchBuffer</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpszShortPath</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetShortPathNameA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpszLongPath</span><span class="p">,</span> <span class="n">lpszShortPath</span><span class="p">,</span> <span class="n">cchBuffer</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetShortPathNameW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetShortPathNameW</span><span class="p">(</span><span class="n">lpszLongPath</span><span class="p">,</span> <span class="n">lpszShortPath</span><span class="p">,</span> <span class="n">cchBuffer</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchBuffer</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchBuffer</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpszShortPath</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetShortPathNameW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpszLongPath</span><span class="p">,</span> <span class="n">lpszShortPath</span><span class="p">,</span> <span class="n">cchBuffer</span><span class="p">)</span>
|
|
|
|
<span class="c1"># TODO: might be in another DLL depending of version</span>
|
|
<span class="c1"># Should handle this..</span>
|
|
|
|
<span class="k">def</span> <span class="nf">GetMappedFileNameWWrapper</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpv</span><span class="p">,</span> <span class="n">lpFilename</span><span class="p">,</span> <span class="n">nSize</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nSize</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">lpFilename</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetMappedFileNameWWrapper</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpv</span><span class="p">,</span> <span class="n">lpFilename</span><span class="p">,</span> <span class="n">nSize</span><span class="p">)</span>
|
|
<span class="n">GetMappedFileNameW</span> <span class="o">=</span> <span class="n">Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetMappedFileNameW"</span><span class="p">)(</span><span class="n">GetMappedFileNameWWrapper</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">GetMappedFileNameAWrapper</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpv</span><span class="p">,</span> <span class="n">lpFilename</span><span class="p">,</span> <span class="n">nSize</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nSize</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">lpFilename</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetMappedFileNameAWrapper</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpv</span><span class="p">,</span> <span class="n">lpFilename</span><span class="p">,</span> <span class="n">nSize</span><span class="p">)</span>
|
|
<span class="n">GetMappedFileNameA</span> <span class="o">=</span> <span class="n">Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetMappedFileNameA"</span><span class="p">)(</span><span class="n">GetMappedFileNameAWrapper</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span> <span class="nf">QueryWorkingSetWrapper</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">pv</span><span class="p">,</span> <span class="n">cb</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">QueryWorkingSet</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">pv</span><span class="p">,</span> <span class="n">cb</span><span class="p">)</span>
|
|
<span class="n">QueryWorkingSet</span> <span class="o">=</span> <span class="n">Kernel32Proxy</span><span class="p">(</span><span class="s2">"QueryWorkingSet"</span><span class="p">)(</span><span class="n">QueryWorkingSetWrapper</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span> <span class="nf">QueryWorkingSetExWrapper</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">pv</span><span class="p">,</span> <span class="n">cb</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">QueryWorkingSetEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">pv</span><span class="p">,</span> <span class="n">cb</span><span class="p">)</span>
|
|
<span class="n">QueryWorkingSetEx</span> <span class="o">=</span> <span class="n">Kernel32Proxy</span><span class="p">(</span><span class="s2">"QueryWorkingSetEx"</span><span class="p">)(</span><span class="n">QueryWorkingSetExWrapper</span><span class="p">)</span>
|
|
|
|
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">is_implemented</span><span class="p">(</span><span class="n">GetMappedFileNameA</span><span class="p">):</span>
|
|
<span class="n">GetMappedFileNameW</span> <span class="o">=</span> <span class="n">PsapiProxy</span><span class="p">(</span><span class="s2">"GetMappedFileNameW"</span><span class="p">)(</span><span class="n">GetMappedFileNameWWrapper</span><span class="p">)</span>
|
|
<span class="n">GetMappedFileNameA</span> <span class="o">=</span> <span class="n">PsapiProxy</span><span class="p">(</span><span class="s2">"GetMappedFileNameA"</span><span class="p">)(</span><span class="n">GetMappedFileNameAWrapper</span><span class="p">)</span>
|
|
<span class="n">QueryWorkingSet</span> <span class="o">=</span> <span class="n">PsapiProxy</span><span class="p">(</span><span class="s2">"QueryWorkingSet"</span><span class="p">)(</span><span class="n">QueryWorkingSetWrapper</span><span class="p">)</span>
|
|
<span class="n">QueryWorkingSetEx</span> <span class="o">=</span> <span class="n">PsapiProxy</span><span class="p">(</span><span class="s2">"QueryWorkingSetEx"</span><span class="p">)(</span><span class="n">QueryWorkingSetExWrapper</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span> <span class="nf">GetModuleBaseNameAWrapper</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">hModule</span><span class="p">,</span> <span class="n">lpBaseName</span><span class="p">,</span> <span class="n">nSize</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpBaseName</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetModuleBaseNameAWrapper</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">hModule</span><span class="p">,</span> <span class="n">lpBaseName</span><span class="p">,</span> <span class="n">nSize</span><span class="p">)</span>
|
|
<span class="n">GetModuleBaseNameA</span> <span class="o">=</span> <span class="n">Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetMappedFileNameA"</span><span class="p">)(</span><span class="n">GetModuleBaseNameAWrapper</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">GetModuleBaseNameWWrapper</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">hModule</span><span class="p">,</span> <span class="n">lpBaseName</span><span class="p">,</span> <span class="n">nSize</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpBaseName</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetModuleBaseNameWWrapper</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">hModule</span><span class="p">,</span> <span class="n">lpBaseName</span><span class="p">,</span> <span class="n">nSize</span><span class="p">)</span>
|
|
<span class="n">GetModuleBaseNameA</span> <span class="o">=</span> <span class="n">Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetModuleBaseNameW"</span><span class="p">)(</span><span class="n">GetModuleBaseNameWWrapper</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">is_implemented</span><span class="p">(</span><span class="n">GetModuleBaseNameA</span><span class="p">):</span>
|
|
<span class="n">GetModuleBaseNameA</span> <span class="o">=</span> <span class="n">PsapiProxy</span><span class="p">(</span><span class="s2">"GetModuleBaseNameA"</span><span class="p">)(</span><span class="n">GetModuleBaseNameAWrapper</span><span class="p">)</span>
|
|
<span class="n">GetModuleBaseNameW</span> <span class="o">=</span> <span class="n">PsapiProxy</span><span class="p">(</span><span class="s2">"GetModuleBaseNameW"</span><span class="p">)(</span><span class="n">GetModuleBaseNameWWrapper</span><span class="p">)</span>
|
|
|
|
|
|
<span class="k">def</span> <span class="nf">GetProcessImageFileNameAWrapper</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpImageFileName</span><span class="p">,</span> <span class="n">nSize</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpImageFileName</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetProcessImageFileNameAWrapper</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpImageFileName</span><span class="p">,</span> <span class="n">nSize</span><span class="p">)</span>
|
|
<span class="n">GetProcessImageFileNameA</span> <span class="o">=</span> <span class="n">Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetProcessImageFileNameA"</span><span class="p">)(</span><span class="n">GetProcessImageFileNameAWrapper</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span> <span class="nf">GetProcessImageFileNameWWrapper</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpImageFileName</span><span class="p">,</span> <span class="n">nSize</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpImageFileName</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetProcessImageFileNameWWrapper</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpImageFileName</span><span class="p">,</span> <span class="n">nSize</span><span class="p">)</span>
|
|
<span class="n">GetProcessImageFileNameW</span> <span class="o">=</span> <span class="n">Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetProcessImageFileNameW"</span><span class="p">)(</span><span class="n">GetProcessImageFileNameWWrapper</span><span class="p">)</span>
|
|
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">is_implemented</span><span class="p">(</span><span class="n">GetProcessImageFileNameA</span><span class="p">):</span>
|
|
<span class="n">GetProcessImageFileNameA</span> <span class="o">=</span> <span class="n">PsapiProxy</span><span class="p">(</span><span class="s2">"GetProcessImageFileNameA"</span><span class="p">)(</span><span class="n">GetProcessImageFileNameAWrapper</span><span class="p">)</span>
|
|
<span class="n">GetProcessImageFileNameW</span> <span class="o">=</span> <span class="n">PsapiProxy</span><span class="p">(</span><span class="s2">"GetProcessImageFileNameW"</span><span class="p">)(</span><span class="n">GetProcessImageFileNameWWrapper</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Debug API</span>
|
|
|
|
<span class="n">DebugBreak</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"DebugBreak"</span><span class="p">)</span>
|
|
<span class="n">ContinueDebugEvent</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"ContinueDebugEvent"</span><span class="p">)</span>
|
|
<span class="n">DebugActiveProcess</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"DebugActiveProcess"</span><span class="p">)</span>
|
|
<span class="n">DebugActiveProcessStop</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"DebugActiveProcessStop"</span><span class="p">)</span>
|
|
<span class="n">DebugSetProcessKillOnExit</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"DebugSetProcessKillOnExit"</span><span class="p">)</span>
|
|
<span class="n">DebugBreakProcess</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"DebugBreakProcess"</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"WaitForDebugEvent"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">WaitForDebugEvent</span><span class="p">(</span><span class="n">lpDebugEvent</span><span class="p">,</span> <span class="n">dwMilliseconds</span><span class="o">=</span><span class="n">INFINITE</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">WaitForDebugEvent</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpDebugEvent</span><span class="p">,</span> <span class="n">dwMilliseconds</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Volumes stuff</span>
|
|
|
|
<span class="n">GetLogicalDriveStringsA</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetLogicalDriveStringsA"</span><span class="p">)</span>
|
|
<span class="n">GetLogicalDriveStringsW</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetLogicalDriveStringsW"</span><span class="p">)</span>
|
|
<span class="n">GetDriveTypeA</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetDriveTypeA"</span><span class="p">)</span>
|
|
<span class="n">GetDriveTypeW</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetDriveTypeW"</span><span class="p">)</span>
|
|
<span class="n">QueryDosDeviceA</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"QueryDosDeviceA"</span><span class="p">)</span>
|
|
<span class="n">QueryDosDeviceW</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"QueryDosDeviceW"</span><span class="p">)</span>
|
|
<span class="n">GetVolumeNameForVolumeMountPointA</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetVolumeNameForVolumeMountPointA"</span><span class="p">)</span>
|
|
<span class="n">GetVolumeNameForVolumeMountPointW</span> <span class="o">=</span> <span class="n">TransparentKernel32Proxy</span><span class="p">(</span><span class="s2">"GetVolumeNameForVolumeMountPointW"</span><span class="p">)</span>
|
|
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetVolumeInformationA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetVolumeInformationA</span><span class="p">(</span><span class="n">lpRootPathName</span><span class="p">,</span> <span class="n">lpVolumeNameBuffer</span><span class="p">,</span> <span class="n">nVolumeNameSize</span><span class="p">,</span> <span class="n">lpVolumeSerialNumber</span><span class="p">,</span> <span class="n">lpMaximumComponentLength</span><span class="p">,</span> <span class="n">lpFileSystemFlags</span><span class="p">,</span> <span class="n">lpFileSystemNameBuffer</span><span class="p">,</span> <span class="n">nFileSystemNameSize</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nVolumeNameSize</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">lpVolumeNameBuffer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nVolumeNameSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpVolumeNameBuffer</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">nFileSystemNameSize</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">lpFileSystemNameBuffer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nFileSystemNameSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpFileSystemNameBuffer</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetVolumeInformationA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpRootPathName</span><span class="p">,</span> <span class="n">lpVolumeNameBuffer</span><span class="p">,</span> <span class="n">nVolumeNameSize</span><span class="p">,</span> <span class="n">lpVolumeSerialNumber</span><span class="p">,</span> <span class="n">lpMaximumComponentLength</span><span class="p">,</span> <span class="n">lpFileSystemFlags</span><span class="p">,</span> <span class="n">lpFileSystemNameBuffer</span><span class="p">,</span> <span class="n">nFileSystemNameSize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetVolumeInformationW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetVolumeInformationW</span><span class="p">(</span><span class="n">lpRootPathName</span><span class="p">,</span> <span class="n">lpVolumeNameBuffer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">nVolumeNameSize</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpVolumeSerialNumber</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpMaximumComponentLength</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpFileSystemFlags</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpFileSystemNameBuffer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">nFileSystemNameSize</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">nVolumeNameSize</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">lpVolumeNameBuffer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nVolumeNameSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpVolumeNameBuffer</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">nFileSystemNameSize</span> <span class="o">==</span> <span class="mi">0</span> <span class="ow">and</span> <span class="n">lpFileSystemNameBuffer</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">nFileSystemNameSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpFileSystemNameBuffer</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetVolumeInformationW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpRootPathName</span><span class="p">,</span> <span class="n">lpVolumeNameBuffer</span><span class="p">,</span> <span class="n">nVolumeNameSize</span><span class="p">,</span> <span class="n">lpVolumeSerialNumber</span><span class="p">,</span> <span class="n">lpMaximumComponentLength</span><span class="p">,</span> <span class="n">lpFileSystemFlags</span><span class="p">,</span> <span class="n">lpFileSystemNameBuffer</span><span class="p">,</span> <span class="n">nFileSystemNameSize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"FindFirstVolumeA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">FindFirstVolumeA</span><span class="p">(</span><span class="n">lpszVolumeName</span><span class="p">,</span> <span class="n">cchBufferLength</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchBufferLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchBufferLength</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpszVolumeName</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">FindFirstVolumeA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpszVolumeName</span><span class="p">,</span> <span class="n">cchBufferLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"FindFirstVolumeW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">FindFirstVolumeW</span><span class="p">(</span><span class="n">lpszVolumeName</span><span class="p">,</span> <span class="n">cchBufferLength</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchBufferLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchBufferLength</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpszVolumeName</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">FindFirstVolumeW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpszVolumeName</span><span class="p">,</span> <span class="n">cchBufferLength</span><span class="p">)</span>
|
|
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"FindNextVolumeA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">FindNextVolumeA</span><span class="p">(</span><span class="n">hFindVolume</span><span class="p">,</span> <span class="n">lpszVolumeName</span><span class="p">,</span> <span class="n">cchBufferLength</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchBufferLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchBufferLength</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpszVolumeName</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">FindNextVolumeA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hFindVolume</span><span class="p">,</span> <span class="n">lpszVolumeName</span><span class="p">,</span> <span class="n">cchBufferLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"FindNextVolumeW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">FindNextVolumeW</span><span class="p">(</span><span class="n">hFindVolume</span><span class="p">,</span> <span class="n">lpszVolumeName</span><span class="p">,</span> <span class="n">cchBufferLength</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchBufferLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchBufferLength</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpszVolumeName</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">FindNextVolumeW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hFindVolume</span><span class="p">,</span> <span class="n">lpszVolumeName</span><span class="p">,</span> <span class="n">cchBufferLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"SetConsoleCtrlHandler"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">SetConsoleCtrlHandler</span><span class="p">(</span><span class="n">HandlerRoutine</span><span class="p">,</span> <span class="n">Add</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">SetConsoleCtrlHandler</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">HandlerRoutine</span><span class="p">,</span> <span class="n">Add</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetProcessDEPPolicy"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetProcessDEPPolicy</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpFlags</span><span class="p">,</span> <span class="n">lpPermanent</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetProcessDEPPolicy</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpFlags</span><span class="p">,</span> <span class="n">lpPermanent</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># ProcThreadAttributeList</span>
|
|
<span class="k">def</span> <span class="nf">initializeprocthreadattributelist_error_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">result</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
<span class="n">error</span> <span class="o">=</span> <span class="n">GetLastError</span><span class="p">()</span>
|
|
<span class="k">if</span> <span class="n">error</span> <span class="o">==</span> <span class="n">ERROR_INSUFFICIENT_BUFFER</span> <span class="ow">and</span> <span class="n">args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
<span class="k">raise</span> <span class="n">Kernel32Error</span><span class="p">(</span><span class="n">func_name</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"InitializeProcThreadAttributeList"</span><span class="p">,</span> <span class="n">initializeprocthreadattributelist_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">InitializeProcThreadAttributeList</span><span class="p">(</span><span class="n">lpAttributeList</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwAttributeCount</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">dwFlags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpSize</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">InitializeProcThreadAttributeList</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpAttributeList</span><span class="p">,</span> <span class="n">dwAttributeCount</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">lpSize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"UpdateProcThreadAttribute"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">UpdateProcThreadAttribute</span><span class="p">(</span><span class="n">lpAttributeList</span><span class="p">,</span> <span class="n">dwFlags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">Attribute</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpValue</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">cbSize</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpPreviousValue</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpReturnSize</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">UpdateProcThreadAttribute</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpAttributeList</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">Attribute</span><span class="p">,</span> <span class="n">lpValue</span><span class="p">,</span> <span class="n">cbSize</span><span class="p">,</span> <span class="n">lpPreviousValue</span><span class="p">,</span> <span class="n">lpReturnSize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"DeleteProcThreadAttributeList"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">DeleteProcThreadAttributeList</span><span class="p">(</span><span class="n">lpAttributeList</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">DeleteProcThreadAttributeList</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpAttributeList</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetWindowsDirectoryA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetWindowsDirectoryA</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">,</span> <span class="n">uSize</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">uSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">uSize</span> <span class="o">=</span> <span class="n">DWORD</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">))</span>
|
|
<span class="k">return</span> <span class="n">GetWindowsDirectoryA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">,</span> <span class="n">uSize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetWindowsDirectoryW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetWindowsDirectoryW</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">,</span> <span class="n">uSize</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">uSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">uSize</span> <span class="o">=</span> <span class="n">DWORD</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">))</span>
|
|
<span class="k">return</span> <span class="n">GetWindowsDirectoryW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpBuffer</span><span class="p">,</span> <span class="n">uSize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"GetProductInfo"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetProductInfo</span><span class="p">(</span><span class="n">dwOSMajorVersion</span><span class="p">,</span> <span class="n">dwOSMinorVersion</span><span class="p">,</span> <span class="n">dwSpMajorVersion</span><span class="p">,</span> <span class="n">dwSpMinorVersion</span><span class="p">,</span> <span class="n">pdwReturnedProductType</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetProductInfo</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwOSMajorVersion</span><span class="p">,</span> <span class="n">dwOSMinorVersion</span><span class="p">,</span> <span class="n">dwSpMajorVersion</span><span class="p">,</span> <span class="n">dwSpMinorVersion</span><span class="p">,</span> <span class="n">pdwReturnedProductType</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># ### NTDLL #### #</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtReadVirtualMemory'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtReadVirtualMemory</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="p">,</span> <span class="n">lpNumberOfBytesRead</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtReadVirtualMemory</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="p">,</span> <span class="n">lpNumberOfBytesRead</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtWow64ReadVirtualMemory64'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtWow64ReadVirtualMemory64</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="p">,</span> <span class="n">lpNumberOfBytesRead</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtWow64ReadVirtualMemory64</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="p">,</span> <span class="n">lpNumberOfBytesRead</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtWriteVirtualMemory'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtWriteVirtualMemory</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">NumberOfBytesToWrite</span><span class="p">,</span> <span class="n">NumberOfBytesWritten</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtWriteVirtualMemory</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">NumberOfBytesToWrite</span><span class="p">,</span> <span class="n">NumberOfBytesWritten</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtWow64WriteVirtualMemory64'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtWow64WriteVirtualMemory64</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="p">,</span> <span class="n">lpNumberOfBytesWritten</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtWow64WriteVirtualMemory64</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProcess</span><span class="p">,</span> <span class="n">lpBaseAddress</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nSize</span><span class="p">,</span> <span class="n">lpNumberOfBytesWritten</span><span class="p">)</span>
|
|
|
|
<span class="k">def</span> <span class="nf">ntquerysysteminformation_error_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
<span class="c1"># Ignore STATUS_INFO_LENGTH_MISMATCH if SystemInformation is None</span>
|
|
<span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="n">STATUS_INFO_LENGTH_MISMATCH</span> <span class="ow">and</span> <span class="n">args</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
<span class="k">raise</span> <span class="n">Kernel32Error</span><span class="p">(</span><span class="s2">"</span><span class="si">{0}</span><span class="s2"> failed with NTStatus </span><span class="si">{1}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="nb">hex</span><span class="p">(</span><span class="n">result</span><span class="p">)))</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtCreateFile"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtCreateFile</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="p">,</span> <span class="n">AllocationSize</span><span class="p">,</span> <span class="n">FileAttributes</span><span class="p">,</span> <span class="n">ShareAccess</span><span class="p">,</span> <span class="n">CreateDisposition</span><span class="p">,</span> <span class="n">CreateOptions</span><span class="p">,</span> <span class="n">EaBuffer</span><span class="p">,</span> <span class="n">EaLength</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtCreateFile</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="p">,</span> <span class="n">AllocationSize</span><span class="p">,</span> <span class="n">FileAttributes</span><span class="p">,</span> <span class="n">ShareAccess</span><span class="p">,</span> <span class="n">CreateDisposition</span><span class="p">,</span> <span class="n">CreateOptions</span><span class="p">,</span> <span class="n">EaBuffer</span><span class="p">,</span> <span class="n">EaLength</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtGetContextThread"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtGetContextThread</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtGetContextThread</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"LdrLoadDll"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">LdrLoadDll</span><span class="p">(</span><span class="n">PathToFile</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ModuleFileName</span><span class="p">,</span> <span class="n">ModuleHandle</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">LdrLoadDll</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PathToFile</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ModuleFileName</span><span class="p">,</span> <span class="n">ModuleHandle</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtQuerySystemInformation'</span><span class="p">,</span> <span class="n">ntquerysysteminformation_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQuerySystemInformation</span><span class="p">(</span><span class="n">SystemInformationClass</span><span class="p">,</span> <span class="n">SystemInformation</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">SystemInformationLength</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">SystemInformation</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">SystemInformationLength</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="n">SystemInformationLength</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">SystemInformation</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">NtQuerySystemInformation</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">SystemInformationClass</span><span class="p">,</span> <span class="n">SystemInformation</span><span class="p">,</span> <span class="n">SystemInformationLength</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtQueryInformationProcess'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryInformationProcess</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">ProcessInformationClass</span><span class="p">,</span> <span class="n">ProcessInformation</span><span class="p">,</span> <span class="n">ProcessInformationLength</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">ProcessInformation</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">ProcessInformationLength</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="n">ProcessInformationLength</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">ProcessInformation</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">ProcessInformation</span><span class="p">)</span> <span class="o">==</span> <span class="n">PROCESS_BASIC_INFORMATION</span><span class="p">:</span>
|
|
<span class="n">ProcessInformation</span> <span class="o">=</span> <span class="n">byref</span><span class="p">(</span><span class="n">ProcessInformation</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="n">ReturnLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">ReturnLength</span> <span class="o">=</span> <span class="n">byref</span><span class="p">(</span><span class="n">ULONG</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">NtQueryInformationProcess</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">ProcessInformationClass</span><span class="p">,</span> <span class="n">ProcessInformation</span><span class="p">,</span> <span class="n">ProcessInformationLength</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtSetInformationProcess'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtSetInformationProcess</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">ProcessInformationClass</span><span class="p">,</span> <span class="n">ProcessInformation</span><span class="p">,</span> <span class="n">ProcessInformationLength</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">ProcessInformationLength</span><span class="p">:</span>
|
|
<span class="n">ProcessInformationLength</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">ProcessInformation</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">NtSetInformationProcess</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">ProcessInformationClass</span><span class="p">,</span> <span class="n">ProcessInformation</span><span class="p">,</span> <span class="n">ProcessInformationLength</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtQueryInformationThread'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryInformationThread</span><span class="p">(</span><span class="n">ThreadHandle</span><span class="p">,</span> <span class="n">ThreadInformationClass</span><span class="p">,</span> <span class="n">ThreadInformation</span><span class="p">,</span> <span class="n">ThreadInformationLength</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">ReturnLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">ReturnLength</span> <span class="o">=</span> <span class="n">byref</span><span class="p">(</span><span class="n">ULONG</span><span class="p">())</span>
|
|
<span class="k">if</span> <span class="n">ThreadInformation</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">ThreadInformationLength</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="n">ThreadInformationLength</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">ThreadInformation</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">NtQueryInformationThread</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ThreadHandle</span><span class="p">,</span> <span class="n">ThreadInformationClass</span><span class="p">,</span> <span class="n">ThreadInformation</span><span class="p">,</span> <span class="n">ThreadInformationLength</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtAllocateVirtualMemory'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAllocateVirtualMemory</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">ZeroBits</span><span class="p">,</span> <span class="n">RegionSize</span><span class="p">,</span> <span class="n">AllocationType</span><span class="p">,</span> <span class="n">Protect</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAllocateVirtualMemory</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">ZeroBits</span><span class="p">,</span> <span class="n">RegionSize</span><span class="p">,</span> <span class="n">AllocationType</span><span class="p">,</span> <span class="n">Protect</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtFreeVirtualMemory'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtFreeVirtualMemory</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">RegionSize</span><span class="p">,</span> <span class="n">FreeType</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtFreeVirtualMemory</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">RegionSize</span><span class="p">,</span> <span class="n">FreeType</span><span class="p">)</span>
|
|
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtProtectVirtualMemory'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtProtectVirtualMemory</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">NumberOfBytesToProtect</span><span class="p">,</span> <span class="n">NewAccessProtection</span><span class="p">,</span> <span class="n">OldAccessProtection</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">OldAccessProtection</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">OldAccessProtection</span> <span class="o">=</span> <span class="n">DWORD</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="n">NtProtectVirtualMemory</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">NumberOfBytesToProtect</span><span class="p">,</span> <span class="n">NewAccessProtection</span><span class="p">,</span> <span class="n">OldAccessProtection</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtQueryVirtualMemory'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryVirtualMemory</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">MemoryInformationClass</span><span class="p">,</span> <span class="n">MemoryInformation</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">MemoryInformationLength</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">ReturnLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">ReturnLength</span> <span class="o">=</span> <span class="n">byref</span><span class="p">(</span><span class="n">ULONG</span><span class="p">())</span>
|
|
<span class="k">if</span> <span class="n">MemoryInformation</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">MemoryInformationLength</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
|
<span class="n">ProcessInformationLength</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">MemoryInformation</span><span class="p">)</span>
|
|
<span class="k">if</span> <span class="nb">type</span><span class="p">(</span><span class="n">MemoryInformation</span><span class="p">)</span> <span class="o">==</span> <span class="n">MEMORY_BASIC_INFORMATION64</span><span class="p">:</span>
|
|
<span class="n">MemoryInformation</span> <span class="o">=</span> <span class="n">byref</span><span class="p">(</span><span class="n">MemoryInformation</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">NtQueryVirtualMemory</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">MemoryInformationClass</span><span class="p">,</span> <span class="n">MemoryInformation</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">MemoryInformationLength</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtQueryObject'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryObject</span><span class="p">(</span><span class="n">Handle</span><span class="p">,</span> <span class="n">ObjectInformationClass</span><span class="p">,</span> <span class="n">ObjectInformation</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ObjectInformationLength</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtQueryObject</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Handle</span><span class="p">,</span> <span class="n">ObjectInformationClass</span><span class="p">,</span> <span class="n">ObjectInformation</span><span class="p">,</span> <span class="n">ObjectInformationLength</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s1">'NtCreateThreadEx'</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtCreateThreadEx</span><span class="p">(</span><span class="n">ThreadHandle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="o">=</span><span class="mh">0x1fffff</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ProcessHandle</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpStartAddress</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpParameter</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">CreateSuspended</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwStackSize</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">Unknown1</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">Unknown2</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">Unknown</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">ThreadHandle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">ThreadHandle</span> <span class="o">=</span> <span class="n">byref</span><span class="p">(</span><span class="n">HANDLE</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">NtCreateThreadEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ThreadHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">lpStartAddress</span><span class="p">,</span> <span class="n">lpParameter</span><span class="p">,</span> <span class="n">CreateSuspended</span><span class="p">,</span> <span class="n">dwStackSize</span><span class="p">,</span> <span class="n">Unknown1</span><span class="p">,</span> <span class="n">Unknown2</span><span class="p">,</span> <span class="n">Unknown3</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtSetContextThread"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtSetContextThread</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtSetContextThread</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hThread</span><span class="p">,</span> <span class="n">lpContext</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtOpenEvent"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtOpenEvent</span><span class="p">(</span><span class="n">EventHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtOpenEvent</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">EventHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtSetInformationFile"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtSetInformationFile</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="p">,</span> <span class="n">FileInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">FileInformationClass</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtSetInformationFile</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="p">,</span> <span class="n">FileInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">FileInformationClass</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcCreatePort"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcCreatePort</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">PortAttributes</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcCreatePort</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">PortAttributes</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcConnectPort"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcConnectPort</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">PortName</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">PortAttributes</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">RequiredServerSid</span><span class="p">,</span> <span class="n">ConnectionMessage</span><span class="p">,</span> <span class="n">BufferLength</span><span class="p">,</span> <span class="n">OutMessageAttributes</span><span class="p">,</span> <span class="n">InMessageAttributes</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcConnectPort</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">PortName</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">PortAttributes</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">RequiredServerSid</span><span class="p">,</span> <span class="n">ConnectionMessage</span><span class="p">,</span> <span class="n">BufferLength</span><span class="p">,</span> <span class="n">OutMessageAttributes</span><span class="p">,</span> <span class="n">InMessageAttributes</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcConnectPortEx"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcConnectPortEx</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">ConnectionPortObjectAttributes</span><span class="p">,</span> <span class="n">ClientPortObjectAttributes</span><span class="p">,</span> <span class="n">PortAttributes</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ServerSecurityRequirements</span><span class="p">,</span> <span class="n">ConnectionMessage</span><span class="p">,</span> <span class="n">BufferLength</span><span class="p">,</span> <span class="n">OutMessageAttributes</span><span class="p">,</span> <span class="n">InMessageAttributes</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcConnectPortEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">ConnectionPortObjectAttributes</span><span class="p">,</span> <span class="n">ClientPortObjectAttributes</span><span class="p">,</span> <span class="n">PortAttributes</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ServerSecurityRequirements</span><span class="p">,</span> <span class="n">ConnectionMessage</span><span class="p">,</span> <span class="n">BufferLength</span><span class="p">,</span> <span class="n">OutMessageAttributes</span><span class="p">,</span> <span class="n">InMessageAttributes</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcAcceptConnectPort"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcAcceptConnectPort</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">ConnectionPortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">PortAttributes</span><span class="p">,</span> <span class="n">PortContext</span><span class="p">,</span> <span class="n">ConnectionRequest</span><span class="p">,</span> <span class="n">ConnectionMessageAttributes</span><span class="p">,</span> <span class="n">AcceptConnection</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcAcceptConnectPort</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">ConnectionPortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">PortAttributes</span><span class="p">,</span> <span class="n">PortContext</span><span class="p">,</span> <span class="n">ConnectionRequest</span><span class="p">,</span> <span class="n">ConnectionMessageAttributes</span><span class="p">,</span> <span class="n">AcceptConnection</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcQueryInformation"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcQueryInformation</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">PortInformationClass</span><span class="p">,</span> <span class="n">PortInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcQueryInformation</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">PortInformationClass</span><span class="p">,</span> <span class="n">PortInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcDisconnectPort"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcDisconnectPort</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcDisconnectPort</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcSendWaitReceivePort"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcSendWaitReceivePort</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">SendMessage</span><span class="p">,</span> <span class="n">SendMessageAttributes</span><span class="p">,</span> <span class="n">ReceiveMessage</span><span class="p">,</span> <span class="n">BufferLength</span><span class="p">,</span> <span class="n">ReceiveMessageAttributes</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcSendWaitReceivePort</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">SendMessage</span><span class="p">,</span> <span class="n">SendMessageAttributes</span><span class="p">,</span> <span class="n">ReceiveMessage</span><span class="p">,</span> <span class="n">BufferLength</span><span class="p">,</span> <span class="n">ReceiveMessageAttributes</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"AlpcInitializeMessageAttribute"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">AlpcInitializeMessageAttribute</span><span class="p">(</span><span class="n">AttributeFlags</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">BufferSize</span><span class="p">,</span> <span class="n">RequiredBufferSize</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">AlpcInitializeMessageAttribute</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">AttributeFlags</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">BufferSize</span><span class="p">,</span> <span class="n">RequiredBufferSize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"AlpcGetMessageAttribute"</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">AlpcGetMessageAttribute</span><span class="p">(</span><span class="n">Buffer</span><span class="p">,</span> <span class="n">AttributeFlag</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">AlpcGetMessageAttribute</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Buffer</span><span class="p">,</span> <span class="n">AttributeFlag</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcCreatePortSection"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcCreatePortSection</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">SectionHandle</span><span class="p">,</span> <span class="n">SectionSize</span><span class="p">,</span> <span class="n">AlpcSectionHandle</span><span class="p">,</span> <span class="n">ActualSectionSize</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcCreatePortSection</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">SectionHandle</span><span class="p">,</span> <span class="n">SectionSize</span><span class="p">,</span> <span class="n">AlpcSectionHandle</span><span class="p">,</span> <span class="n">ActualSectionSize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcDeletePortSection"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcDeletePortSection</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">SectionHandle</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcDeletePortSection</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">SectionHandle</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcCreateSectionView"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcCreateSectionView</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ViewAttributes</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcCreateSectionView</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ViewAttributes</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcDeleteSectionView"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcDeleteSectionView</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ViewBase</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcDeleteSectionView</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">ViewBase</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtAlpcQueryInformationMessage"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtAlpcQueryInformationMessage</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">PortMessage</span><span class="p">,</span> <span class="n">MessageInformationClass</span><span class="p">,</span> <span class="n">MessageInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtAlpcQueryInformationMessage</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PortHandle</span><span class="p">,</span> <span class="n">PortMessage</span><span class="p">,</span> <span class="n">MessageInformationClass</span><span class="p">,</span> <span class="n">MessageInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtOpenDirectoryObject"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtOpenDirectoryObject</span><span class="p">(</span><span class="n">DirectoryHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtOpenDirectoryObject</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">DirectoryHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtQueryDirectoryObject"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryDirectoryObject</span><span class="p">(</span><span class="n">DirectoryHandle</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ReturnSingleEntry</span><span class="p">,</span> <span class="n">RestartScan</span><span class="p">,</span> <span class="n">Context</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtQueryDirectoryObject</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">DirectoryHandle</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ReturnSingleEntry</span><span class="p">,</span> <span class="n">RestartScan</span><span class="p">,</span> <span class="n">Context</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtQuerySymbolicLinkObject"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQuerySymbolicLinkObject</span><span class="p">(</span><span class="n">LinkHandle</span><span class="p">,</span> <span class="n">LinkTarget</span><span class="p">,</span> <span class="n">ReturnedLength</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtQuerySymbolicLinkObject</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">LinkHandle</span><span class="p">,</span> <span class="n">LinkTarget</span><span class="p">,</span> <span class="n">ReturnedLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtOpenSymbolicLinkObject"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtOpenSymbolicLinkObject</span><span class="p">(</span><span class="n">LinkHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtOpenSymbolicLinkObject</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">LinkHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtQueryInformationFile"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryInformationFile</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="p">,</span> <span class="n">FileInformation</span><span class="p">,</span> <span class="n">Length</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">FileInformationClass</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">Length</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">Length</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">FileInformation</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">NtQueryInformationFile</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="p">,</span> <span class="n">FileInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">FileInformationClass</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtQueryDirectoryFile"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryDirectoryFile</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">Event</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ApcRoutine</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ApcContext</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">FileInformation</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">Length</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">FileInformationClass</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">ReturnSingleEntry</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">FileName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">RestartScan</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">Length</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">Length</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">FileInformation</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">NtQueryDirectoryFile</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">Event</span><span class="p">,</span> <span class="n">ApcRoutine</span><span class="p">,</span> <span class="n">ApcContext</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="p">,</span> <span class="n">FileInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">FileInformationClass</span><span class="p">,</span> <span class="n">ReturnSingleEntry</span><span class="p">,</span> <span class="n">FileName</span><span class="p">,</span> <span class="n">RestartScan</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtQueryVolumeInformationFile"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryVolumeInformationFile</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="p">,</span> <span class="n">FsInformation</span><span class="p">,</span> <span class="n">Length</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">FsInformationClass</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">Length</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">Length</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">FsInformation</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">NtQueryVolumeInformationFile</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">FileHandle</span><span class="p">,</span> <span class="n">IoStatusBlock</span><span class="p">,</span> <span class="n">FsInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">FsInformationClass</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"RtlDecompressBuffer"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RtlDecompressBuffer</span><span class="p">(</span><span class="n">CompressionFormat</span><span class="p">,</span> <span class="n">UncompressedBuffer</span><span class="p">,</span> <span class="n">UncompressedBufferSize</span><span class="p">,</span> <span class="n">CompressedBuffer</span><span class="p">,</span> <span class="n">CompressedBufferSize</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">FinalUncompressedSize</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">CompressedBufferSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">CompressedBufferSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">CompressedBuffer</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">RtlDecompressBuffer</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">CompressionFormat</span><span class="p">,</span> <span class="n">UncompressedBuffer</span><span class="p">,</span> <span class="n">UncompressedBufferSize</span><span class="p">,</span> <span class="n">CompressedBuffer</span><span class="p">,</span> <span class="n">CompressedBufferSize</span><span class="p">,</span> <span class="n">FinalUncompressedSize</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"RtlDecompressBufferEx"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RtlDecompressBufferEx</span><span class="p">(</span><span class="n">CompressionFormat</span><span class="p">,</span> <span class="n">UncompressedBuffer</span><span class="p">,</span> <span class="n">UncompressedBufferSize</span><span class="p">,</span> <span class="n">CompressedBuffer</span><span class="p">,</span> <span class="n">CompressedBufferSize</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">FinalUncompressedSize</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">WorkSpace</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">CompressedBufferSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">CompressedBufferSize</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">CompressedBuffer</span><span class="p">)</span>
|
|
<span class="c1"># TODO: automatic 'WorkSpace' size calc + allocation ?</span>
|
|
<span class="k">return</span> <span class="n">RtlDecompressBufferEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">CompressionFormat</span><span class="p">,</span> <span class="n">UncompressedBuffer</span><span class="p">,</span> <span class="n">UncompressedBufferSize</span><span class="p">,</span> <span class="n">CompressedBuffer</span><span class="p">,</span> <span class="n">CompressedBufferSize</span><span class="p">,</span> <span class="n">FinalUncompressedSize</span><span class="p">,</span> <span class="n">WorkSpace</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"RtlGetCompressionWorkSpaceSize"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RtlGetCompressionWorkSpaceSize</span><span class="p">(</span><span class="n">CompressionFormatAndEngine</span><span class="p">,</span> <span class="n">CompressBufferWorkSpaceSize</span><span class="p">,</span> <span class="n">CompressFragmentWorkSpaceSize</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RtlGetCompressionWorkSpaceSize</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">CompressionFormatAndEngine</span><span class="p">,</span> <span class="n">CompressBufferWorkSpaceSize</span><span class="p">,</span> <span class="n">CompressFragmentWorkSpaceSize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"RtlDosPathNameToNtPathName_U"</span><span class="p">,</span> <span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RtlDosPathNameToNtPathName_U</span><span class="p">(</span><span class="n">DosName</span><span class="p">,</span> <span class="n">NtName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">PartName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">RelativeName</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RtlDosPathNameToNtPathName_U</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">DosName</span><span class="p">,</span> <span class="n">NtName</span><span class="p">,</span> <span class="n">PartName</span><span class="p">,</span> <span class="n">RelativeName</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Section stuff</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtCreateSection"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtCreateSection</span><span class="p">(</span><span class="n">SectionHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">MaximumSize</span><span class="p">,</span> <span class="n">SectionPageProtection</span><span class="p">,</span> <span class="n">AllocationAttributes</span><span class="p">,</span> <span class="n">FileHandle</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtCreateSection</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">SectionHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">MaximumSize</span><span class="p">,</span> <span class="n">SectionPageProtection</span><span class="p">,</span> <span class="n">AllocationAttributes</span><span class="p">,</span> <span class="n">FileHandle</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtOpenSection"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtOpenSection</span><span class="p">(</span><span class="n">SectionHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtOpenSection</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">SectionHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtMapViewOfSection"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtMapViewOfSection</span><span class="p">(</span><span class="n">SectionHandle</span><span class="p">,</span> <span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">ZeroBits</span><span class="p">,</span> <span class="n">CommitSize</span><span class="p">,</span> <span class="n">SectionOffset</span><span class="p">,</span> <span class="n">ViewSize</span><span class="p">,</span> <span class="n">InheritDisposition</span><span class="p">,</span> <span class="n">AllocationType</span><span class="p">,</span> <span class="n">Win32Protect</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtMapViewOfSection</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">SectionHandle</span><span class="p">,</span> <span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">,</span> <span class="n">ZeroBits</span><span class="p">,</span> <span class="n">CommitSize</span><span class="p">,</span> <span class="n">SectionOffset</span><span class="p">,</span> <span class="n">ViewSize</span><span class="p">,</span> <span class="n">InheritDisposition</span><span class="p">,</span> <span class="n">AllocationType</span><span class="p">,</span> <span class="n">Win32Protect</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtUnmapViewOfSection"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtUnmapViewOfSection</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtUnmapViewOfSection</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">BaseAddress</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"RtlGetUnloadEventTraceEx"</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RtlGetUnloadEventTraceEx</span><span class="p">(</span><span class="n">ElementSize</span><span class="p">,</span> <span class="n">ElementCount</span><span class="p">,</span> <span class="n">EventTrace</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RtlGetUnloadEventTraceEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ElementSize</span><span class="p">,</span> <span class="n">ElementCount</span><span class="p">,</span> <span class="n">EventTrace</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"TpCallbackSendAlpcMessageOnCompletion"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">TpCallbackSendAlpcMessageOnCompletion</span><span class="p">(</span><span class="n">TpHandle</span><span class="p">,</span> <span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">SendMessage</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">TpCallbackSendAlpcMessageOnCompletion</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">TpHandle</span><span class="p">,</span> <span class="n">PortHandle</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">SendMessage</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># low level registry</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtOpenKey"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtOpenKey</span><span class="p">(</span><span class="n">KeyHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtOpenKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">KeyHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtCreateKey"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtCreateKey</span><span class="p">(</span><span class="n">pKeyHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">TitleIndex</span><span class="p">,</span> <span class="n">Class</span><span class="p">,</span> <span class="n">CreateOptions</span><span class="p">,</span> <span class="n">Disposition</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtCreateKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pKeyHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">ObjectAttributes</span><span class="p">,</span> <span class="n">TitleIndex</span><span class="p">,</span> <span class="n">Class</span><span class="p">,</span> <span class="n">CreateOptions</span><span class="p">,</span> <span class="n">Disposition</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtSetValueKey"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtSetValueKey</span><span class="p">(</span><span class="n">KeyHandle</span><span class="p">,</span> <span class="n">ValueName</span><span class="p">,</span> <span class="n">TitleIndex</span><span class="p">,</span> <span class="n">Type</span><span class="p">,</span> <span class="n">Data</span><span class="p">,</span> <span class="n">DataSize</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtSetValueKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">KeyHandle</span><span class="p">,</span> <span class="n">ValueName</span><span class="p">,</span> <span class="n">TitleIndex</span><span class="p">,</span> <span class="n">Type</span><span class="p">,</span> <span class="n">Data</span><span class="p">,</span> <span class="n">DataSize</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtQueryValueKey"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryValueKey</span><span class="p">(</span><span class="n">KeyHandle</span><span class="p">,</span> <span class="n">ValueName</span><span class="p">,</span> <span class="n">KeyValueInformationClass</span><span class="p">,</span> <span class="n">KeyValueInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ResultLength</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtQueryValueKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">KeyHandle</span><span class="p">,</span> <span class="n">ValueName</span><span class="p">,</span> <span class="n">KeyValueInformationClass</span><span class="p">,</span> <span class="n">KeyValueInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ResultLength</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtEnumerateValueKey"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtEnumerateValueKey</span><span class="p">(</span><span class="n">KeyHandle</span><span class="p">,</span> <span class="n">Index</span><span class="p">,</span> <span class="n">KeyValueInformationClass</span><span class="p">,</span> <span class="n">KeyValueInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ResultLength</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">NtEnumerateValueKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">KeyHandle</span><span class="p">,</span> <span class="n">Index</span><span class="p">,</span> <span class="n">KeyValueInformationClass</span><span class="p">,</span> <span class="n">KeyValueInformation</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">ResultLength</span><span class="p">)</span>
|
|
|
|
<span class="nd">@NtdllProxy</span><span class="p">(</span><span class="s2">"NtQueryLicenseValue"</span><span class="p">,</span> <span class="n">error_ntstatus</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">NtQueryLicenseValue</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="n">Type</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">Length</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">DataLength</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">Length</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">Buffer</span><span class="p">:</span>
|
|
<span class="n">Length</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">buffer</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">NtQueryLicenseValue</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="n">Type</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">Length</span><span class="p">,</span> <span class="n">DataLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Not exported</span>
|
|
|
|
<span class="c1"># @NtdllProxy("ApiSetResolveToHost")</span>
|
|
<span class="c1"># def ApiSetResolveToHost(Schema, FileNameIn, ParentName, Resolved, HostBinary):</span>
|
|
<span class="c1"># return ApiSetResolveToHost.ctypes_function(Schema, FileNameIn, ParentName, Resolved, HostBinary)</span>
|
|
|
|
|
|
<span class="c1"># ##### ADVAPI32 ####### #</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenProcessToken'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenProcessToken</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">TokenHandle</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="sd">"""If ProcessHandle is None: take the current process"""</span>
|
|
<span class="k">if</span> <span class="n">ProcessHandle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">ProcessHandle</span> <span class="o">=</span> <span class="n">GetCurrentProcess</span><span class="p">()</span>
|
|
<span class="k">return</span> <span class="n">OpenProcessToken</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ProcessHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">TokenHandle</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenThreadToken'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenThreadToken</span><span class="p">(</span><span class="n">ThreadHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">OpenAsSelf</span><span class="p">,</span> <span class="n">TokenHandle</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenThreadToken</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ThreadHandle</span><span class="p">,</span> <span class="n">DesiredAccess</span><span class="p">,</span> <span class="n">OpenAsSelf</span><span class="p">,</span> <span class="n">TokenHandle</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'SetThreadToken'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">SetThreadToken</span><span class="p">(</span><span class="n">Thread</span><span class="p">,</span> <span class="n">Token</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">SetThreadToken</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Thread</span><span class="p">,</span> <span class="n">Token</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'DuplicateToken'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">DuplicateToken</span><span class="p">(</span><span class="n">ExistingTokenHandle</span><span class="p">,</span> <span class="n">ImpersonationLevel</span><span class="p">,</span> <span class="n">DuplicateTokenHandle</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">DuplicateToken</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ExistingTokenHandle</span><span class="p">,</span> <span class="n">ImpersonationLevel</span><span class="p">,</span> <span class="n">DuplicateTokenHandle</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'DuplicateTokenEx'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">DuplicateTokenEx</span><span class="p">(</span><span class="n">hExistingToken</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">lpTokenAttributes</span><span class="p">,</span> <span class="n">ImpersonationLevel</span><span class="p">,</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">phNewToken</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">DuplicateTokenEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hExistingToken</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">lpTokenAttributes</span><span class="p">,</span> <span class="n">ImpersonationLevel</span><span class="p">,</span> <span class="n">TokenType</span><span class="p">,</span> <span class="n">phNewToken</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'LookupPrivilegeValueA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">LookupPrivilegeValueA</span><span class="p">(</span><span class="n">lpSystemName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpName</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpLuid</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">LookupPrivilegeValueA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">lpLuid</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'LookupPrivilegeValueW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">LookupPrivilegeValueW</span><span class="p">(</span><span class="n">lpSystemName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpName</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpLuid</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">LookupPrivilegeValueW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">lpLuid</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'LookupPrivilegeNameA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">LookupPrivilegeNameA</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpLuid</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">cchName</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">LookupPrivilegeNameA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpLuid</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">cchName</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'LookupPrivilegeNameW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">LookupPrivilegeNameW</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpLuid</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">cchName</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">LookupPrivilegeNameW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpLuid</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">cchName</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'AdjustTokenPrivileges'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">AdjustTokenPrivileges</span><span class="p">(</span><span class="n">TokenHandle</span><span class="p">,</span> <span class="n">DisableAllPrivileges</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">NewState</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">BufferLength</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">PreviousState</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">BufferLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">BufferLength</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">NewState</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">AdjustTokenPrivileges</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">TokenHandle</span><span class="p">,</span> <span class="n">DisableAllPrivileges</span><span class="p">,</span> <span class="n">NewState</span><span class="p">,</span> <span class="n">BufferLength</span><span class="p">,</span> <span class="n">PreviousState</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'LookupAccountSidA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">LookupAccountSidA</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpSid</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">cchName</span><span class="p">,</span> <span class="n">lpReferencedDomainName</span><span class="p">,</span> <span class="n">cchReferencedDomainName</span><span class="p">,</span> <span class="n">peUse</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">LookupAccountSidA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpSid</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">cchName</span><span class="p">,</span> <span class="n">lpReferencedDomainName</span><span class="p">,</span> <span class="n">cchReferencedDomainName</span><span class="p">,</span> <span class="n">peUse</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'LookupAccountSidW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">LookupAccountSidW</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpSid</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">cchName</span><span class="p">,</span> <span class="n">lpReferencedDomainName</span><span class="p">,</span> <span class="n">cchReferencedDomainName</span><span class="p">,</span> <span class="n">peUse</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">LookupAccountSidW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpSystemName</span><span class="p">,</span> <span class="n">lpSid</span><span class="p">,</span> <span class="n">lpName</span><span class="p">,</span> <span class="n">cchName</span><span class="p">,</span> <span class="n">lpReferencedDomainName</span><span class="p">,</span> <span class="n">cchReferencedDomainName</span><span class="p">,</span> <span class="n">peUse</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CreateWellKnownSid'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateWellKnownSid</span><span class="p">(</span><span class="n">WellKnownSidType</span><span class="p">,</span> <span class="n">DomainSid</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">pSid</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">cbSid</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateWellKnownSid</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">WellKnownSidType</span><span class="p">,</span> <span class="n">DomainSid</span><span class="p">,</span> <span class="n">pSid</span><span class="p">,</span> <span class="n">cbSid</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Token stuff</span>
|
|
|
|
<span class="n">GetSidSubAuthorityCount</span> <span class="o">=</span> <span class="n">TransparentAdvapi32Proxy</span><span class="p">(</span><span class="s2">"GetSidSubAuthorityCount"</span><span class="p">)</span>
|
|
<span class="n">GetSidSubAuthority</span> <span class="o">=</span> <span class="n">TransparentAdvapi32Proxy</span><span class="p">(</span><span class="s2">"GetSidSubAuthority"</span><span class="p">)</span>
|
|
<span class="n">GetLengthSid</span> <span class="o">=</span> <span class="n">TransparentAdvapi32Proxy</span><span class="p">(</span><span class="s2">"GetLengthSid"</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'GetTokenInformation'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetTokenInformation</span><span class="p">(</span><span class="n">TokenHandle</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">TokenInformationClass</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">TokenInformation</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">TokenInformationLength</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">ReturnLength</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">ReturnLength</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">DWORD</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">GetTokenInformation</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">TokenHandle</span><span class="p">,</span> <span class="n">TokenInformationClass</span><span class="p">,</span> <span class="n">TokenInformation</span><span class="p">,</span> <span class="n">TokenInformationLength</span><span class="p">,</span> <span class="n">ReturnLength</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'SetTokenInformation'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">SetTokenInformation</span><span class="p">(</span><span class="n">TokenHandle</span><span class="p">,</span> <span class="n">TokenInformationClass</span><span class="p">,</span> <span class="n">TokenInformation</span><span class="p">,</span> <span class="n">TokenInformationLength</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">SetTokenInformation</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">TokenHandle</span><span class="p">,</span> <span class="n">TokenInformationClass</span><span class="p">,</span> <span class="n">TokenInformation</span><span class="p">,</span> <span class="n">TokenInformationLength</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'RegOpenKeyExA'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RegOpenKeyExA</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">lpSubKey</span><span class="p">,</span> <span class="n">ulOptions</span><span class="p">,</span> <span class="n">samDesired</span><span class="p">,</span> <span class="n">phkResult</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RegOpenKeyExA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">lpSubKey</span><span class="p">,</span> <span class="n">ulOptions</span><span class="p">,</span> <span class="n">samDesired</span><span class="p">,</span> <span class="n">phkResult</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Security stuff</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'GetNamedSecurityInfoA'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetNamedSecurityInfoA</span><span class="p">(</span><span class="n">pObjectName</span><span class="p">,</span> <span class="n">ObjectType</span><span class="p">,</span> <span class="n">SecurityInfo</span><span class="p">,</span> <span class="n">ppsidOwner</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppsidGroup</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppDacl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppSacl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppSecurityDescriptor</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetNamedSecurityInfoA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pObjectName</span><span class="p">,</span> <span class="n">ObjectType</span><span class="p">,</span> <span class="n">SecurityInfo</span><span class="p">,</span> <span class="n">ppsidOwner</span><span class="p">,</span> <span class="n">ppsidGroup</span><span class="p">,</span> <span class="n">ppDacl</span><span class="p">,</span> <span class="n">ppSacl</span><span class="p">,</span> <span class="n">ppSecurityDescriptor</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'GetNamedSecurityInfoW'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetNamedSecurityInfoW</span><span class="p">(</span><span class="n">pObjectName</span><span class="p">,</span> <span class="n">ObjectType</span><span class="p">,</span> <span class="n">SecurityInfo</span><span class="p">,</span> <span class="n">ppsidOwner</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppsidGroup</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppDacl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppSacl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppSecurityDescriptor</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetNamedSecurityInfoW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pObjectName</span><span class="p">,</span> <span class="n">ObjectType</span><span class="p">,</span> <span class="n">SecurityInfo</span><span class="p">,</span> <span class="n">ppsidOwner</span><span class="p">,</span> <span class="n">ppsidGroup</span><span class="p">,</span> <span class="n">ppDacl</span><span class="p">,</span> <span class="n">ppSacl</span><span class="p">,</span> <span class="n">ppSecurityDescriptor</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'GetSecurityInfo'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetSecurityInfo</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">ObjectType</span><span class="p">,</span> <span class="n">SecurityInfo</span><span class="p">,</span> <span class="n">ppsidOwner</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppsidGroup</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppDacl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppSacl</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppSecurityDescriptor</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetSecurityInfo</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">ObjectType</span><span class="p">,</span> <span class="n">SecurityInfo</span><span class="p">,</span> <span class="n">ppsidOwner</span><span class="p">,</span> <span class="n">ppsidGroup</span><span class="p">,</span> <span class="n">ppDacl</span><span class="p">,</span> <span class="n">ppSacl</span><span class="p">,</span> <span class="n">ppSecurityDescriptor</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Sid stuff</span>
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'ConvertStringSidToSidA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ConvertStringSidToSidA</span><span class="p">(</span><span class="n">StringSid</span><span class="p">,</span> <span class="n">Sid</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ConvertStringSidToSidA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">StringSid</span><span class="p">,</span> <span class="n">Sid</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'ConvertStringSidToSidW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ConvertStringSidToSidW</span><span class="p">(</span><span class="n">StringSid</span><span class="p">,</span> <span class="n">Sid</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ConvertStringSidToSidW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">StringSid</span><span class="p">,</span> <span class="n">Sid</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'ConvertSidToStringSidA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ConvertSidToStringSidA</span><span class="p">(</span><span class="n">Sid</span><span class="p">,</span> <span class="n">StringSid</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ConvertSidToStringSidA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Sid</span><span class="p">,</span> <span class="n">StringSid</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'ConvertSidToStringSidW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ConvertSidToStringSidW</span><span class="p">(</span><span class="n">Sid</span><span class="p">,</span> <span class="n">StringSid</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ConvertSidToStringSidW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Sid</span><span class="p">,</span> <span class="n">StringSid</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Registry stuff</span>
|
|
|
|
<span class="c1"># TODO: default values? which ones ?</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'RegOpenKeyExW'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RegOpenKeyExW</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">lpSubKey</span><span class="p">,</span> <span class="n">ulOptions</span><span class="p">,</span> <span class="n">samDesired</span><span class="p">,</span> <span class="n">phkResult</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RegOpenKeyExW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">lpSubKey</span><span class="p">,</span> <span class="n">ulOptions</span><span class="p">,</span> <span class="n">samDesired</span><span class="p">,</span> <span class="n">phkResult</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'RegGetValueA'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RegGetValueA</span><span class="p">(</span><span class="n">hkey</span><span class="p">,</span> <span class="n">lpSubKey</span><span class="p">,</span> <span class="n">lpValue</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pdwType</span><span class="p">,</span> <span class="n">pvData</span><span class="p">,</span> <span class="n">pcbData</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RegGetValueA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hkey</span><span class="p">,</span> <span class="n">lpSubKey</span><span class="p">,</span> <span class="n">lpValue</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pdwType</span><span class="p">,</span> <span class="n">pvData</span><span class="p">,</span> <span class="n">pcbData</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'RegGetValueW'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RegGetValueW</span><span class="p">(</span><span class="n">hkey</span><span class="p">,</span> <span class="n">lpSubKey</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpValue</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">dwFlags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">pdwType</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">pvData</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">pcbData</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RegGetValueW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hkey</span><span class="p">,</span> <span class="n">lpSubKey</span><span class="p">,</span> <span class="n">lpValue</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pdwType</span><span class="p">,</span> <span class="n">pvData</span><span class="p">,</span> <span class="n">pcbData</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'RegQueryValueExA'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RegQueryValueExA</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">lpValueName</span><span class="p">,</span> <span class="n">lpReserved</span><span class="p">,</span> <span class="n">lpType</span><span class="p">,</span> <span class="n">lpData</span><span class="p">,</span> <span class="n">lpcbData</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RegQueryValueExA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">lpValueName</span><span class="p">,</span> <span class="n">lpReserved</span><span class="p">,</span> <span class="n">lpType</span><span class="p">,</span> <span class="n">lpData</span><span class="p">,</span> <span class="n">lpcbData</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'RegQueryValueExW'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RegQueryValueExW</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">lpValueName</span><span class="p">,</span> <span class="n">lpReserved</span><span class="p">,</span> <span class="n">lpType</span><span class="p">,</span> <span class="n">lpData</span><span class="p">,</span> <span class="n">lpcbData</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RegQueryValueExA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">lpValueName</span><span class="p">,</span> <span class="n">lpReserved</span><span class="p">,</span> <span class="n">lpType</span><span class="p">,</span> <span class="n">lpData</span><span class="p">,</span> <span class="n">lpcbData</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'RegCloseKey'</span><span class="p">,</span> <span class="n">should_return_zero_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RegCloseKey</span><span class="p">(</span><span class="n">hKey</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RegCloseKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hKey</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Services</span>
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenSCManagerA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenSCManagerA</span><span class="p">(</span><span class="n">lpMachineName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpDatabaseName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="o">=</span><span class="n">SC_MANAGER_ALL_ACCESS</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenSCManagerA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpMachineName</span><span class="p">,</span> <span class="n">lpDatabaseName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenSCManagerW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenSCManagerW</span><span class="p">(</span><span class="n">lpMachineName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpDatabaseName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="o">=</span><span class="n">SC_MANAGER_ALL_ACCESS</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenSCManagerW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpMachineName</span><span class="p">,</span> <span class="n">lpDatabaseName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'EnumServicesStatusExA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EnumServicesStatusExA</span><span class="p">(</span><span class="n">hSCManager</span><span class="p">,</span> <span class="n">InfoLevel</span><span class="p">,</span> <span class="n">dwServiceType</span><span class="p">,</span> <span class="n">dwServiceState</span><span class="p">,</span> <span class="n">lpServices</span><span class="p">,</span> <span class="n">cbBufSize</span><span class="p">,</span> <span class="n">pcbBytesNeeded</span><span class="p">,</span> <span class="n">lpServicesReturned</span><span class="p">,</span> <span class="n">lpResumeHandle</span><span class="p">,</span> <span class="n">pszGroupName</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EnumServicesStatusExA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSCManager</span><span class="p">,</span> <span class="n">InfoLevel</span><span class="p">,</span> <span class="n">dwServiceType</span><span class="p">,</span> <span class="n">dwServiceState</span><span class="p">,</span> <span class="n">lpServices</span><span class="p">,</span> <span class="n">cbBufSize</span><span class="p">,</span> <span class="n">pcbBytesNeeded</span><span class="p">,</span> <span class="n">lpServicesReturned</span><span class="p">,</span> <span class="n">lpResumeHandle</span><span class="p">,</span> <span class="n">pszGroupName</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'EnumServicesStatusExW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EnumServicesStatusExW</span><span class="p">(</span><span class="n">hSCManager</span><span class="p">,</span> <span class="n">InfoLevel</span><span class="p">,</span> <span class="n">dwServiceType</span><span class="p">,</span> <span class="n">dwServiceState</span><span class="p">,</span> <span class="n">lpServices</span><span class="p">,</span> <span class="n">cbBufSize</span><span class="p">,</span> <span class="n">pcbBytesNeeded</span><span class="p">,</span> <span class="n">lpServicesReturned</span><span class="p">,</span> <span class="n">lpResumeHandle</span><span class="p">,</span> <span class="n">pszGroupName</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EnumServicesStatusExW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSCManager</span><span class="p">,</span> <span class="n">InfoLevel</span><span class="p">,</span> <span class="n">dwServiceType</span><span class="p">,</span> <span class="n">dwServiceState</span><span class="p">,</span> <span class="n">lpServices</span><span class="p">,</span> <span class="n">cbBufSize</span><span class="p">,</span> <span class="n">pcbBytesNeeded</span><span class="p">,</span> <span class="n">lpServicesReturned</span><span class="p">,</span> <span class="n">lpResumeHandle</span><span class="p">,</span> <span class="n">pszGroupName</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'StartServiceA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">StartServiceA</span><span class="p">(</span><span class="n">hService</span><span class="p">,</span> <span class="n">dwNumServiceArgs</span><span class="p">,</span> <span class="n">lpServiceArgVectors</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">StartServiceA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hService</span><span class="p">,</span> <span class="n">dwNumServiceArgs</span><span class="p">,</span> <span class="n">lpServiceArgVectors</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'StartServiceW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">StartServiceW</span><span class="p">(</span><span class="n">hService</span><span class="p">,</span> <span class="n">dwNumServiceArgs</span><span class="p">,</span> <span class="n">lpServiceArgVectors</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">StartServiceW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hService</span><span class="p">,</span> <span class="n">dwNumServiceArgs</span><span class="p">,</span> <span class="n">lpServiceArgVectors</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenServiceA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenServiceA</span><span class="p">(</span><span class="n">hSCManager</span><span class="p">,</span> <span class="n">lpServiceName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenServiceA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSCManager</span><span class="p">,</span> <span class="n">lpServiceName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenServiceW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenServiceW</span><span class="p">(</span><span class="n">hSCManager</span><span class="p">,</span> <span class="n">lpServiceName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenServiceW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSCManager</span><span class="p">,</span> <span class="n">lpServiceName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CloseServiceHandle'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CloseServiceHandle</span><span class="p">(</span><span class="n">hSCObject</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CloseServiceHandle</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hSCObject</span><span class="p">)</span>
|
|
|
|
<span class="c1"># Create process stuff</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CreateProcessAsUserA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateProcessAsUserA</span><span class="p">(</span><span class="n">hToken</span><span class="p">,</span> <span class="n">lpApplicationName</span><span class="p">,</span> <span class="n">lpCommandLine</span><span class="p">,</span> <span class="n">lpProcessAttributes</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="p">,</span> <span class="n">bInheritHandles</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="p">,</span> <span class="n">lpEnvironment</span><span class="p">,</span> <span class="n">lpCurrentDirectory</span><span class="p">,</span> <span class="n">lpStartupInfo</span><span class="p">,</span> <span class="n">lpProcessInformation</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateProcessAsUserA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hToken</span><span class="p">,</span> <span class="n">lpApplicationName</span><span class="p">,</span> <span class="n">lpCommandLine</span><span class="p">,</span> <span class="n">lpProcessAttributes</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="p">,</span> <span class="n">bInheritHandles</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="p">,</span> <span class="n">lpEnvironment</span><span class="p">,</span> <span class="n">lpCurrentDirectory</span><span class="p">,</span> <span class="n">lpStartupInfo</span><span class="p">,</span> <span class="n">lpProcessInformation</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CreateProcessAsUserW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateProcessAsUserW</span><span class="p">(</span><span class="n">hToken</span><span class="p">,</span> <span class="n">lpApplicationName</span><span class="p">,</span> <span class="n">lpCommandLine</span><span class="p">,</span> <span class="n">lpProcessAttributes</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="p">,</span> <span class="n">bInheritHandles</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="p">,</span> <span class="n">lpEnvironment</span><span class="p">,</span> <span class="n">lpCurrentDirectory</span><span class="p">,</span> <span class="n">lpStartupInfo</span><span class="p">,</span> <span class="n">lpProcessInformation</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateProcessAsUserW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hToken</span><span class="p">,</span> <span class="n">lpApplicationName</span><span class="p">,</span> <span class="n">lpCommandLine</span><span class="p">,</span> <span class="n">lpProcessAttributes</span><span class="p">,</span> <span class="n">lpThreadAttributes</span><span class="p">,</span> <span class="n">bInheritHandles</span><span class="p">,</span> <span class="n">dwCreationFlags</span><span class="p">,</span> <span class="n">lpEnvironment</span><span class="p">,</span> <span class="n">lpCurrentDirectory</span><span class="p">,</span> <span class="n">lpStartupInfo</span><span class="p">,</span> <span class="n">lpProcessInformation</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Event log stuff</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenEventLogA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenEventLogA</span><span class="p">(</span><span class="n">lpUNCServerName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpSourceName</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenEventLogA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpUNCServerName</span><span class="p">,</span> <span class="n">lpSourceName</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenEventLogW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenEventLogW</span><span class="p">(</span><span class="n">lpUNCServerName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpSourceName</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenEventLogW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpUNCServerName</span><span class="p">,</span> <span class="n">lpSourceName</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenBackupEventLogA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenBackupEventLogA</span><span class="p">(</span><span class="n">lpUNCServerName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpSourceName</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenBackupEventLogA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpUNCServerName</span><span class="p">,</span> <span class="n">lpSourceName</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'OpenBackupEventLogW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenBackupEventLogW</span><span class="p">(</span><span class="n">lpUNCServerName</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpSourceName</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenBackupEventLogW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpUNCServerName</span><span class="p">,</span> <span class="n">lpSourceName</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'ReadEventLogA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ReadEventLogA</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">,</span> <span class="n">dwReadFlags</span><span class="p">,</span> <span class="n">dwRecordOffset</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nNumberOfBytesToRead</span><span class="p">,</span> <span class="n">pnBytesRead</span><span class="p">,</span> <span class="n">pnMinNumberOfBytesNeeded</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ReadEventLogA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">,</span> <span class="n">dwReadFlags</span><span class="p">,</span> <span class="n">dwRecordOffset</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nNumberOfBytesToRead</span><span class="p">,</span> <span class="n">pnBytesRead</span><span class="p">,</span> <span class="n">pnMinNumberOfBytesNeeded</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'ReadEventLogW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ReadEventLogW</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">,</span> <span class="n">dwReadFlags</span><span class="p">,</span> <span class="n">dwRecordOffset</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nNumberOfBytesToRead</span><span class="p">,</span> <span class="n">pnBytesRead</span><span class="p">,</span> <span class="n">pnMinNumberOfBytesNeeded</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ReadEventLogW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">,</span> <span class="n">dwReadFlags</span><span class="p">,</span> <span class="n">dwRecordOffset</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">nNumberOfBytesToRead</span><span class="p">,</span> <span class="n">pnBytesRead</span><span class="p">,</span> <span class="n">pnMinNumberOfBytesNeeded</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'GetEventLogInformation'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetEventLogInformation</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">,</span> <span class="n">dwInfoLevel</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">cbBufSize</span><span class="p">,</span> <span class="n">pcbBytesNeeded</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetEventLogInformation</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">,</span> <span class="n">dwInfoLevel</span><span class="p">,</span> <span class="n">lpBuffer</span><span class="p">,</span> <span class="n">cbBufSize</span><span class="p">,</span> <span class="n">pcbBytesNeeded</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'GetNumberOfEventLogRecords'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetNumberOfEventLogRecords</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">,</span> <span class="n">NumberOfRecords</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetNumberOfEventLogRecords</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">,</span> <span class="n">NumberOfRecords</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CloseEventLog'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CloseEventLog</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CloseEventLog</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hEventLog</span><span class="p">)</span>
|
|
|
|
<span class="c1"># ##### Iphlpapi (network list and stuff) ###### #</span>
|
|
|
|
<span class="k">def</span> <span class="nf">set_tcp_entry_error_check</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">args</span><span class="p">):</span>
|
|
<span class="sd">"""raise IphlpapiError if result is NOT 0 -- pretty print error 317"""</span>
|
|
<span class="k">if</span> <span class="n">result</span><span class="p">:</span>
|
|
<span class="k">if</span> <span class="n">result</span> <span class="o">==</span> <span class="mi">317</span><span class="p">:</span>
|
|
<span class="k">raise</span> <span class="n">IphlpapiError</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">,</span> <span class="s2">"<require elevated process>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">func_name</span><span class="p">))</span>
|
|
<span class="k">raise</span> <span class="n">IphlpapiError</span><span class="p">(</span><span class="n">func_name</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">args</span>
|
|
|
|
<span class="n">SetTcpEntry</span> <span class="o">=</span> <span class="n">TransparentIphlpapiProxy</span><span class="p">(</span><span class="s1">'SetTcpEntry'</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">set_tcp_entry_error_check</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@IphlpapiProxy</span><span class="p">(</span><span class="s1">'GetExtendedTcpTable'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetExtendedTcpTable</span><span class="p">(</span><span class="n">pTcpTable</span><span class="p">,</span> <span class="n">pdwSize</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">bOrder</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">ulAf</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">TableClass</span><span class="o">=</span><span class="n">TCP_TABLE_OWNER_PID_ALL</span><span class="p">,</span> <span class="n">Reserved</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">pdwSize</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">pdwSize</span> <span class="o">=</span> <span class="n">ULONG</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">pTcpTable</span><span class="p">))</span>
|
|
<span class="k">return</span> <span class="n">GetExtendedTcpTable</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pTcpTable</span><span class="p">,</span> <span class="n">pdwSize</span><span class="p">,</span> <span class="n">bOrder</span><span class="p">,</span> <span class="n">ulAf</span><span class="p">,</span> <span class="n">TableClass</span><span class="p">,</span> <span class="n">Reserved</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@IphlpapiProxy</span><span class="p">(</span><span class="s1">'GetInterfaceInfo'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetInterfaceInfo</span><span class="p">(</span><span class="n">pIfTable</span><span class="p">,</span> <span class="n">dwOutBufLen</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">dwOutBufLen</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">dwOutBufLen</span> <span class="o">=</span> <span class="n">ULONG</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">sizeof</span><span class="p">(</span><span class="n">pIfTable</span><span class="p">))</span>
|
|
<span class="k">return</span> <span class="n">GetInterfaceInfo</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pIfTable</span><span class="p">,</span> <span class="n">dwOutBufLen</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@IphlpapiProxy</span><span class="p">(</span><span class="s1">'GetIfTable'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetIfTable</span><span class="p">(</span><span class="n">pIfTable</span><span class="p">,</span> <span class="n">pdwSize</span><span class="p">,</span> <span class="n">bOrder</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetIfTable</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pIfTable</span><span class="p">,</span> <span class="n">pdwSize</span><span class="p">,</span> <span class="n">bOrder</span><span class="p">)</span>
|
|
|
|
<span class="nd">@IphlpapiProxy</span><span class="p">(</span><span class="s1">'GetIpAddrTable'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetIpAddrTable</span><span class="p">(</span><span class="n">pIpAddrTable</span><span class="p">,</span> <span class="n">pdwSize</span><span class="p">,</span> <span class="n">bOrder</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetIpAddrTable</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pIpAddrTable</span><span class="p">,</span> <span class="n">pdwSize</span><span class="p">,</span> <span class="n">bOrder</span><span class="p">)</span>
|
|
|
|
<span class="c1"># ## WinTrustProxy PE signature##</span>
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'WinVerifyTrust'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">WinVerifyTrust</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pgActionID</span><span class="p">,</span> <span class="n">pWVTData</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">WinVerifyTrust</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pgActionID</span><span class="p">,</span> <span class="n">pWVTData</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># ##Wintrust: catalog stuff ###</span>
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATAdminCalcHashFromFileHandle'</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATAdminCalcHashFromFileHandle</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">pcbHash</span><span class="p">,</span> <span class="n">pbHash</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATAdminCalcHashFromFileHandle</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hFile</span><span class="p">,</span> <span class="n">pcbHash</span><span class="p">,</span> <span class="n">pbHash</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATAdminCalcHashFromFileHandle2'</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATAdminCalcHashFromFileHandle2</span><span class="p">(</span><span class="n">hCatAdmin</span><span class="p">,</span> <span class="n">hFile</span><span class="p">,</span> <span class="n">pcbHash</span><span class="p">,</span> <span class="n">pbHash</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATAdminCalcHashFromFileHandle2</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCatAdmin</span><span class="p">,</span> <span class="n">hFile</span><span class="p">,</span> <span class="n">pcbHash</span><span class="p">,</span> <span class="n">pbHash</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATAdminEnumCatalogFromHash'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATAdminEnumCatalogFromHash</span><span class="p">(</span><span class="n">hCatAdmin</span><span class="p">,</span> <span class="n">pbHash</span><span class="p">,</span> <span class="n">cbHash</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">phPrevCatInfo</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATAdminEnumCatalogFromHash</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCatAdmin</span><span class="p">,</span> <span class="n">pbHash</span><span class="p">,</span> <span class="n">cbHash</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">phPrevCatInfo</span><span class="p">)</span>
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATAdminAcquireContext'</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATAdminAcquireContext</span><span class="p">(</span><span class="n">phCatAdmin</span><span class="p">,</span> <span class="n">pgSubsystem</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATAdminAcquireContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">phCatAdmin</span><span class="p">,</span> <span class="n">pgSubsystem</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATAdminAcquireContext2'</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATAdminAcquireContext2</span><span class="p">(</span><span class="n">phCatAdmin</span><span class="p">,</span> <span class="n">pgSubsystem</span><span class="p">,</span> <span class="n">pwszHashAlgorithm</span><span class="p">,</span> <span class="n">pStrongHashPolicy</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATAdminAcquireContext2</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">phCatAdmin</span><span class="p">,</span> <span class="n">pgSubsystem</span><span class="p">,</span> <span class="n">pwszHashAlgorithm</span><span class="p">,</span> <span class="n">pStrongHashPolicy</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATCatalogInfoFromContext'</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">zero_is_fail_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATCatalogInfoFromContext</span><span class="p">(</span><span class="n">hCatInfo</span><span class="p">,</span> <span class="n">psCatInfo</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATCatalogInfoFromContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCatInfo</span><span class="p">,</span> <span class="n">psCatInfo</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATAdminReleaseCatalogContext'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATAdminReleaseCatalogContext</span><span class="p">(</span><span class="n">hCatAdmin</span><span class="p">,</span> <span class="n">hCatInfo</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATAdminReleaseCatalogContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCatAdmin</span><span class="p">,</span> <span class="n">hCatInfo</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATAdminReleaseContext'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATAdminReleaseContext</span><span class="p">(</span><span class="n">hCatAdmin</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATAdminReleaseContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCatAdmin</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATEnumerateAttr'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATEnumerateAttr</span><span class="p">(</span><span class="n">hCatalog</span><span class="p">,</span> <span class="n">pCatMember</span><span class="p">,</span> <span class="n">pPrevAttr</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATEnumerateAttr</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCatalog</span><span class="p">,</span> <span class="n">pCatMember</span><span class="p">,</span> <span class="n">pPrevAttr</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATEnumerateCatAttr'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATEnumerateCatAttr</span><span class="p">(</span><span class="n">hCatalog</span><span class="p">,</span> <span class="n">pPrevAttr</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATEnumerateCatAttr</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCatalog</span><span class="p">,</span> <span class="n">pPrevAttr</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WinTrustProxy</span><span class="p">(</span><span class="s1">'CryptCATEnumerateMember'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptCATEnumerateMember</span><span class="p">(</span><span class="n">hCatalog</span><span class="p">,</span> <span class="n">pPrevMember</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptCATEnumerateMember</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCatalog</span><span class="p">,</span> <span class="n">pPrevMember</span><span class="p">)</span>
|
|
|
|
<span class="c1">## Crypto API ##</span>
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertStrToNameA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertStrToNameA</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">pszX500</span><span class="p">,</span> <span class="n">dwStrType</span><span class="p">,</span> <span class="n">pvReserved</span><span class="p">,</span> <span class="n">pbEncoded</span><span class="p">,</span> <span class="n">pcbEncoded</span><span class="p">,</span> <span class="n">ppszError</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertStrToNameA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">pszX500</span><span class="p">,</span> <span class="n">dwStrType</span><span class="p">,</span> <span class="n">pvReserved</span><span class="p">,</span> <span class="n">pbEncoded</span><span class="p">,</span> <span class="n">pcbEncoded</span><span class="p">,</span> <span class="n">ppszError</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertStrToNameW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertStrToNameW</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">pszX500</span><span class="p">,</span> <span class="n">dwStrType</span><span class="p">,</span> <span class="n">pvReserved</span><span class="p">,</span> <span class="n">pbEncoded</span><span class="p">,</span> <span class="n">pcbEncoded</span><span class="p">,</span> <span class="n">ppszError</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertStrToNameW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">pszX500</span><span class="p">,</span> <span class="n">dwStrType</span><span class="p">,</span> <span class="n">pvReserved</span><span class="p">,</span> <span class="n">pbEncoded</span><span class="p">,</span> <span class="n">pcbEncoded</span><span class="p">,</span> <span class="n">ppszError</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertCreateSelfSignCertificate'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertCreateSelfSignCertificate</span><span class="p">(</span><span class="n">hCryptProvOrNCryptKey</span><span class="p">,</span> <span class="n">pSubjectIssuerBlob</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pKeyProvInfo</span><span class="p">,</span> <span class="n">pSignatureAlgorithm</span><span class="p">,</span> <span class="n">pStartTime</span><span class="p">,</span> <span class="n">pEndTime</span><span class="p">,</span> <span class="n">pExtensions</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertCreateSelfSignCertificate</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCryptProvOrNCryptKey</span><span class="p">,</span> <span class="n">pSubjectIssuerBlob</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pKeyProvInfo</span><span class="p">,</span> <span class="n">pSignatureAlgorithm</span><span class="p">,</span> <span class="n">pStartTime</span><span class="p">,</span> <span class="n">pEndTime</span><span class="p">,</span> <span class="n">pExtensions</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertOpenStore'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertOpenStore</span><span class="p">(</span><span class="n">lpszStoreProvider</span><span class="p">,</span> <span class="n">dwMsgAndCertEncodingType</span><span class="p">,</span> <span class="n">hCryptProv</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvPara</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">lpszStoreProvider</span><span class="p">,</span> <span class="p">(</span><span class="n">long</span><span class="p">,</span> <span class="nb">int</span><span class="p">)):</span>
|
|
<span class="n">lpszStoreProvider</span> <span class="o">=</span> <span class="n">LPCSTR</span><span class="p">(</span><span class="n">lpszStoreProvider</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">CertOpenStore</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpszStoreProvider</span><span class="p">,</span> <span class="n">dwMsgAndCertEncodingType</span><span class="p">,</span> <span class="n">hCryptProv</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvPara</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertAddCertificateContextToStore'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertAddCertificateContextToStore</span><span class="p">(</span><span class="n">hCertStore</span><span class="p">,</span> <span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwAddDisposition</span><span class="p">,</span> <span class="n">ppStoreContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertAddCertificateContextToStore</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCertStore</span><span class="p">,</span> <span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwAddDisposition</span><span class="p">,</span> <span class="n">ppStoreContext</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'PFXExportCertStoreEx'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">PFXExportCertStoreEx</span><span class="p">(</span><span class="n">hStore</span><span class="p">,</span> <span class="n">pPFX</span><span class="p">,</span> <span class="n">szPassword</span><span class="p">,</span> <span class="n">pvPara</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">PFXExportCertStoreEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hStore</span><span class="p">,</span> <span class="n">pPFX</span><span class="p">,</span> <span class="n">szPassword</span><span class="p">,</span> <span class="n">pvPara</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CryptGenKey'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptGenKey</span><span class="p">(</span><span class="n">hProv</span><span class="p">,</span> <span class="n">Algid</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">phKey</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptGenKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProv</span><span class="p">,</span> <span class="n">Algid</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">phKey</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CryptDestroyKey'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptDestroyKey</span><span class="p">(</span><span class="n">hKey</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptDestroyKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hKey</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CryptAcquireContextA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptAcquireContextA</span><span class="p">(</span><span class="n">phProv</span><span class="p">,</span> <span class="n">pszContainer</span><span class="p">,</span> <span class="n">pszProvider</span><span class="p">,</span> <span class="n">dwProvType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptAcquireContextA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">phProv</span><span class="p">,</span> <span class="n">pszContainer</span><span class="p">,</span> <span class="n">pszProvider</span><span class="p">,</span> <span class="n">dwProvType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CryptAcquireContextW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptAcquireContextW</span><span class="p">(</span><span class="n">phProv</span><span class="p">,</span> <span class="n">pszContainer</span><span class="p">,</span> <span class="n">pszProvider</span><span class="p">,</span> <span class="n">dwProvType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptAcquireContextW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">phProv</span><span class="p">,</span> <span class="n">pszContainer</span><span class="p">,</span> <span class="n">pszProvider</span><span class="p">,</span> <span class="n">dwProvType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CryptReleaseContext'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptReleaseContext</span><span class="p">(</span><span class="n">hProv</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptReleaseContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hProv</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Advapi32Proxy</span><span class="p">(</span><span class="s1">'CryptExportKey'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptExportKey</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">hExpKey</span><span class="p">,</span> <span class="n">dwBlobType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pbData</span><span class="p">,</span> <span class="n">pdwDataLen</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptExportKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hKey</span><span class="p">,</span> <span class="n">hExpKey</span><span class="p">,</span> <span class="n">dwBlobType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pbData</span><span class="p">,</span> <span class="n">pdwDataLen</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'PFXImportCertStore'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">PFXImportCertStore</span><span class="p">(</span><span class="n">pPFX</span><span class="p">,</span> <span class="n">szPassword</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">PFXImportCertStore</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pPFX</span><span class="p">,</span> <span class="n">szPassword</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertFindCertificateInStore'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertFindCertificateInStore</span><span class="p">(</span><span class="n">hCertStore</span><span class="p">,</span> <span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">dwFindFlags</span><span class="p">,</span> <span class="n">dwFindType</span><span class="p">,</span> <span class="n">pvFindPara</span><span class="p">,</span> <span class="n">pPrevCertContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertFindCertificateInStore</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCertStore</span><span class="p">,</span> <span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">dwFindFlags</span><span class="p">,</span> <span class="n">dwFindType</span><span class="p">,</span> <span class="n">pvFindPara</span><span class="p">,</span> <span class="n">pPrevCertContext</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertGetCertificateContextProperty'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertGetCertificateContextProperty</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwPropId</span><span class="p">,</span> <span class="n">pvData</span><span class="p">,</span> <span class="n">pcbData</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertGetCertificateContextProperty</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwPropId</span><span class="p">,</span> <span class="n">pvData</span><span class="p">,</span> <span class="n">pcbData</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertEnumCertificateContextProperties'</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertEnumCertificateContextProperties</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwPropId</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertEnumCertificateContextProperties</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwPropId</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptEncryptMessage'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptEncryptMessage</span><span class="p">(</span><span class="n">pEncryptPara</span><span class="p">,</span> <span class="n">cRecipientCert</span><span class="p">,</span> <span class="n">rgpRecipientCert</span><span class="p">,</span> <span class="n">pbToBeEncrypted</span><span class="p">,</span> <span class="n">cbToBeEncrypted</span><span class="p">,</span> <span class="n">pbEncryptedBlob</span><span class="p">,</span> <span class="n">pcbEncryptedBlob</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">pbToBeEncrypted</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
|
|
<span class="c1"># Transform string to array of byte</span>
|
|
<span class="n">pbToBeEncrypted</span> <span class="o">=</span> <span class="p">(</span><span class="n">BYTE</span> <span class="o">*</span> <span class="nb">len</span><span class="p">(</span><span class="n">pbToBeEncrypted</span><span class="p">))(</span><span class="o">*</span><span class="nb">bytearray</span><span class="p">(</span><span class="n">pbToBeEncrypted</span><span class="p">))</span>
|
|
<span class="k">if</span> <span class="n">cbToBeEncrypted</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">pbToBeEncrypted</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cbToBeEncrypted</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">pbToBeEncrypted</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">CryptEncryptMessage</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pEncryptPara</span><span class="p">,</span> <span class="n">cRecipientCert</span><span class="p">,</span> <span class="n">rgpRecipientCert</span><span class="p">,</span> <span class="n">pbToBeEncrypted</span><span class="p">,</span> <span class="n">cbToBeEncrypted</span><span class="p">,</span> <span class="n">pbEncryptedBlob</span><span class="p">,</span> <span class="n">pcbEncryptedBlob</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptDecryptMessage'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptDecryptMessage</span><span class="p">(</span><span class="n">pDecryptPara</span><span class="p">,</span> <span class="n">pbEncryptedBlob</span><span class="p">,</span> <span class="n">cbEncryptedBlob</span><span class="p">,</span> <span class="n">pbDecrypted</span><span class="p">,</span> <span class="n">pcbDecrypted</span><span class="p">,</span> <span class="n">ppXchgCert</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptDecryptMessage</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pDecryptPara</span><span class="p">,</span> <span class="n">pbEncryptedBlob</span><span class="p">,</span> <span class="n">cbEncryptedBlob</span><span class="p">,</span> <span class="n">pbDecrypted</span><span class="p">,</span> <span class="n">pcbDecrypted</span><span class="p">,</span> <span class="n">ppXchgCert</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptAcquireCertificatePrivateKey'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptAcquireCertificatePrivateKey</span><span class="p">(</span><span class="n">pCert</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvParameters</span><span class="p">,</span> <span class="n">phCryptProvOrNCryptKey</span><span class="p">,</span> <span class="n">pdwKeySpec</span><span class="p">,</span> <span class="n">pfCallerFreeProvOrNCryptKey</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptAcquireCertificatePrivateKey</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pCert</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvParameters</span><span class="p">,</span> <span class="n">phCryptProvOrNCryptKey</span><span class="p">,</span> <span class="n">pdwKeySpec</span><span class="p">,</span> <span class="n">pfCallerFreeProvOrNCryptKey</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertGetNameStringA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertGetNameStringA</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvTypePara</span><span class="p">,</span> <span class="n">pszNameString</span><span class="p">,</span> <span class="n">cchNameString</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertGetNameStringA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvTypePara</span><span class="p">,</span> <span class="n">pszNameString</span><span class="p">,</span> <span class="n">cchNameString</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertGetNameStringW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertGetNameStringW</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvTypePara</span><span class="p">,</span> <span class="n">pszNameString</span><span class="p">,</span> <span class="n">cchNameString</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertGetNameStringW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">,</span> <span class="n">dwType</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvTypePara</span><span class="p">,</span> <span class="n">pszNameString</span><span class="p">,</span> <span class="n">cchNameString</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertGetCertificateChain'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertGetCertificateChain</span><span class="p">(</span><span class="n">hChainEngine</span><span class="p">,</span> <span class="n">pCertContext</span><span class="p">,</span> <span class="n">pTime</span><span class="p">,</span> <span class="n">hAdditionalStore</span><span class="p">,</span> <span class="n">pChainPara</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvReserved</span><span class="p">,</span> <span class="n">ppChainContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertGetCertificateChain</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hChainEngine</span><span class="p">,</span> <span class="n">pCertContext</span><span class="p">,</span> <span class="n">pTime</span><span class="p">,</span> <span class="n">hAdditionalStore</span><span class="p">,</span> <span class="n">pChainPara</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvReserved</span><span class="p">,</span> <span class="n">ppChainContext</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertDuplicateCertificateContext'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertDuplicateCertificateContext</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertDuplicateCertificateContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertFreeCertificateContext'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertFreeCertificateContext</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertFreeCertificateContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pCertContext</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertEnumCertificatesInStore'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertEnumCertificatesInStore</span><span class="p">(</span><span class="n">hCertStore</span><span class="p">,</span> <span class="n">pPrevCertContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertEnumCertificatesInStore</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCertStore</span><span class="p">,</span> <span class="n">pPrevCertContext</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertCompareCertificate'</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertCompareCertificate</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">pCertId1</span><span class="p">,</span> <span class="n">pCertId2</span><span class="p">):</span>
|
|
<span class="sd">"""This function does not raise is compare has failed:</span>
|
|
<span class="sd"> return 0 if cert are NOT equals</span>
|
|
<span class="sd"> """</span>
|
|
<span class="k">return</span> <span class="n">CertCompareCertificate</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">pCertId1</span><span class="p">,</span> <span class="n">pCertId2</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertEnumCTLsInStore'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertEnumCTLsInStore</span><span class="p">(</span><span class="n">hCertStore</span><span class="p">,</span> <span class="n">pPrevCtlContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertEnumCTLsInStore</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCertStore</span><span class="p">,</span> <span class="n">pPrevCtlContext</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptEncodeObjectEx'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptEncodeObjectEx</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">lpszStructType</span><span class="p">,</span> <span class="n">pvStructInfo</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pEncodePara</span><span class="p">,</span> <span class="n">pvEncoded</span><span class="p">,</span> <span class="n">pcbEncoded</span><span class="p">):</span>
|
|
<span class="n">lpszStructType</span> <span class="o">=</span> <span class="n">LPCSTR</span><span class="p">(</span><span class="n">lpszStructType</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">lpszStructType</span><span class="p">,</span> <span class="p">(</span><span class="nb">int</span><span class="p">,</span> <span class="n">long</span><span class="p">))</span> <span class="k">else</span> <span class="n">lpszStructType</span>
|
|
<span class="k">return</span> <span class="n">CryptEncodeObjectEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">lpszStructType</span><span class="p">,</span> <span class="n">pvStructInfo</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pEncodePara</span><span class="p">,</span> <span class="n">pvEncoded</span><span class="p">,</span> <span class="n">pcbEncoded</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CertCreateCertificateContext'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CertCreateCertificateContext</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">pbCertEncoded</span><span class="p">,</span> <span class="n">cbCertEncoded</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CertCreateCertificateContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">pbCertEncoded</span><span class="p">,</span> <span class="n">cbCertEncoded</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptQueryObject'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptQueryObject</span><span class="p">(</span><span class="n">dwObjectType</span><span class="p">,</span> <span class="n">pvObject</span><span class="p">,</span> <span class="n">dwExpectedContentTypeFlags</span><span class="p">,</span> <span class="n">dwExpectedFormatTypeFlags</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pdwMsgAndCertEncodingType</span><span class="p">,</span> <span class="n">pdwContentType</span><span class="p">,</span> <span class="n">pdwFormatType</span><span class="p">,</span> <span class="n">phCertStore</span><span class="p">,</span> <span class="n">phMsg</span><span class="p">,</span> <span class="n">ppvContext</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptQueryObject</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwObjectType</span><span class="p">,</span> <span class="n">pvObject</span><span class="p">,</span> <span class="n">dwExpectedContentTypeFlags</span><span class="p">,</span> <span class="n">dwExpectedFormatTypeFlags</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pdwMsgAndCertEncodingType</span><span class="p">,</span> <span class="n">pdwContentType</span><span class="p">,</span> <span class="n">pdwFormatType</span><span class="p">,</span> <span class="n">phCertStore</span><span class="p">,</span> <span class="n">phMsg</span><span class="p">,</span> <span class="n">ppvContext</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptMsgGetParam'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptMsgGetParam</span><span class="p">(</span><span class="n">hCryptMsg</span><span class="p">,</span> <span class="n">dwParamType</span><span class="p">,</span> <span class="n">dwIndex</span><span class="p">,</span> <span class="n">pvData</span><span class="p">,</span> <span class="n">pcbData</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptMsgGetParam</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCryptMsg</span><span class="p">,</span> <span class="n">dwParamType</span><span class="p">,</span> <span class="n">dwIndex</span><span class="p">,</span> <span class="n">pvData</span><span class="p">,</span> <span class="n">pcbData</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptDecodeObject'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptDecodeObject</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">lpszStructType</span><span class="p">,</span> <span class="n">pbEncoded</span><span class="p">,</span> <span class="n">cbEncoded</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvStructInfo</span><span class="p">,</span> <span class="n">pcbStructInfo</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptDecodeObject</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwCertEncodingType</span><span class="p">,</span> <span class="n">lpszStructType</span><span class="p">,</span> <span class="n">pbEncoded</span><span class="p">,</span> <span class="n">cbEncoded</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvStructInfo</span><span class="p">,</span> <span class="n">pcbStructInfo</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptMsgVerifyCountersignatureEncoded'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptMsgVerifyCountersignatureEncoded</span><span class="p">(</span><span class="n">hCryptProv</span><span class="p">,</span> <span class="n">dwEncodingType</span><span class="p">,</span> <span class="n">pbSignerInfo</span><span class="p">,</span> <span class="n">cbSignerInfo</span><span class="p">,</span> <span class="n">pbSignerInfoCountersignature</span><span class="p">,</span> <span class="n">cbSignerInfoCountersignature</span><span class="p">,</span> <span class="n">pciCountersigner</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptMsgVerifyCountersignatureEncoded</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCryptProv</span><span class="p">,</span> <span class="n">dwEncodingType</span><span class="p">,</span> <span class="n">pbSignerInfo</span><span class="p">,</span> <span class="n">cbSignerInfo</span><span class="p">,</span> <span class="n">pbSignerInfoCountersignature</span><span class="p">,</span> <span class="n">cbSignerInfoCountersignature</span><span class="p">,</span> <span class="n">pciCountersigner</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptMsgVerifyCountersignatureEncodedEx'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptMsgVerifyCountersignatureEncodedEx</span><span class="p">(</span><span class="n">hCryptProv</span><span class="p">,</span> <span class="n">dwEncodingType</span><span class="p">,</span> <span class="n">pbSignerInfo</span><span class="p">,</span> <span class="n">cbSignerInfo</span><span class="p">,</span> <span class="n">pbSignerInfoCountersignature</span><span class="p">,</span> <span class="n">cbSignerInfoCountersignature</span><span class="p">,</span> <span class="n">dwSignerType</span><span class="p">,</span> <span class="n">pvSigner</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvExtra</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptMsgVerifyCountersignatureEncodedEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCryptProv</span><span class="p">,</span> <span class="n">dwEncodingType</span><span class="p">,</span> <span class="n">pbSignerInfo</span><span class="p">,</span> <span class="n">cbSignerInfo</span><span class="p">,</span> <span class="n">pbSignerInfoCountersignature</span><span class="p">,</span> <span class="n">cbSignerInfoCountersignature</span><span class="p">,</span> <span class="n">dwSignerType</span><span class="p">,</span> <span class="n">pvSigner</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvExtra</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Crypt32Proxy</span><span class="p">(</span><span class="s1">'CryptHashCertificate'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptHashCertificate</span><span class="p">(</span><span class="n">hCryptProv</span><span class="p">,</span> <span class="n">Algid</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pbEncoded</span><span class="p">,</span> <span class="n">cbEncoded</span><span class="p">,</span> <span class="n">pbComputedHash</span><span class="p">,</span> <span class="n">pcbComputedHash</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptHashCertificate</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hCryptProv</span><span class="p">,</span> <span class="n">Algid</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pbEncoded</span><span class="p">,</span> <span class="n">cbEncoded</span><span class="p">,</span> <span class="n">pbComputedHash</span><span class="p">,</span> <span class="n">pcbComputedHash</span><span class="p">)</span>
|
|
|
|
<span class="c1"># ## CryptUI ## #</span>
|
|
|
|
<span class="nd">@CryptUIProxy</span><span class="p">(</span><span class="s1">'CryptUIDlgViewContext'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CryptUIDlgViewContext</span><span class="p">(</span><span class="n">dwContextType</span><span class="p">,</span> <span class="n">pvContext</span><span class="p">,</span> <span class="n">hwnd</span><span class="p">,</span> <span class="n">pwszTitle</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvReserved</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CryptUIDlgViewContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwContextType</span><span class="p">,</span> <span class="n">pvContext</span><span class="p">,</span> <span class="n">hwnd</span><span class="p">,</span> <span class="n">pwszTitle</span><span class="p">,</span> <span class="n">dwFlags</span><span class="p">,</span> <span class="n">pvReserved</span><span class="p">)</span>
|
|
|
|
<span class="c1"># ## User32 stuff ## #</span>
|
|
|
|
<span class="n">EnumWindows</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'EnumWindows'</span><span class="p">)</span>
|
|
<span class="n">EnumChildWindows</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'EnumChildWindows'</span><span class="p">)</span>
|
|
<span class="n">GetParent</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'GetParent'</span><span class="p">)</span>
|
|
<span class="n">GetClassInfoExA</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'GetClassInfoExA'</span><span class="p">)</span>
|
|
<span class="n">GetClassInfoExW</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'GetClassInfoExW'</span><span class="p">)</span>
|
|
<span class="n">GetWindowTextA</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'GetWindowTextA'</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="n">GetWindowTextW</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'GetWindowTextW'</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="n">GetWindowModuleFileNameA</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'GetWindowModuleFileNameA'</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="n">GetWindowModuleFileNameW</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'GetWindowModuleFileNameW'</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="n">GetSystemMetrics</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'GetSystemMetrics'</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="n">GetWindowThreadProcessId</span> <span class="o">=</span> <span class="n">TransparentUser32Proxy</span><span class="p">(</span><span class="s1">'GetWindowThreadProcessId'</span><span class="p">)</span>
|
|
|
|
<span class="nd">@User32Proxy</span><span class="p">(</span><span class="s2">"GetCursorPos"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetCursorPos</span><span class="p">(</span><span class="n">lpPoint</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetCursorPos</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpPoint</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@User32Proxy</span><span class="p">(</span><span class="s2">"WindowFromPoint"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">WindowFromPoint</span><span class="p">(</span><span class="n">Point</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">WindowFromPoint</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Point</span><span class="p">)</span>
|
|
|
|
<span class="nd">@User32Proxy</span><span class="p">(</span><span class="s2">"GetWindowRect"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetWindowRect</span><span class="p">(</span><span class="n">hWnd</span><span class="p">,</span> <span class="n">lpRect</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">GetWindowRect</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hWnd</span><span class="p">,</span> <span class="n">lpRect</span><span class="p">)</span>
|
|
|
|
<span class="nd">@User32Proxy</span><span class="p">(</span><span class="s2">"MessageBoxA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">MessageBoxA</span><span class="p">(</span><span class="n">hWnd</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpText</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpCaption</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">uType</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">MessageBoxA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hWnd</span><span class="p">,</span> <span class="n">lpText</span><span class="p">,</span> <span class="n">lpCaption</span><span class="p">,</span> <span class="n">uType</span><span class="p">)</span>
|
|
|
|
<span class="nd">@User32Proxy</span><span class="p">(</span><span class="s2">"MessageBoxW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">MessageBoxW</span><span class="p">(</span><span class="n">hWnd</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">lpText</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">lpCaption</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">uType</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">MessageBoxW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hWnd</span><span class="p">,</span> <span class="n">lpText</span><span class="p">,</span> <span class="n">lpCaption</span><span class="p">,</span> <span class="n">uType</span><span class="p">)</span>
|
|
|
|
<span class="nd">@User32Proxy</span><span class="p">(</span><span class="s2">"RealGetWindowClassA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RealGetWindowClassA</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pszType</span><span class="p">,</span> <span class="n">cchType</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchType</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchType</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">pszType</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">RealGetWindowClassA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pszType</span><span class="p">,</span> <span class="n">cchType</span><span class="p">)</span>
|
|
|
|
<span class="nd">@User32Proxy</span><span class="p">(</span><span class="s2">"RealGetWindowClassW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RealGetWindowClassW</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pszType</span><span class="p">,</span> <span class="n">cchType</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchType</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchType</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">pszType</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">RealGetWindowClassW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pszType</span><span class="p">,</span> <span class="n">cchType</span><span class="p">)</span>
|
|
|
|
<span class="nd">@User32Proxy</span><span class="p">(</span><span class="s2">"GetClassNameA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetClassNameA</span> <span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pszType</span><span class="p">,</span> <span class="n">cchType</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchType</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchType</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">pszType</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetClassNameA</span> <span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pszType</span><span class="p">,</span> <span class="n">cchType</span><span class="p">)</span>
|
|
|
|
<span class="nd">@User32Proxy</span><span class="p">(</span><span class="s2">"GetClassNameW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetClassNameW</span> <span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pszType</span><span class="p">,</span> <span class="n">cchType</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">cchType</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">cchType</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">pszType</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetClassNameW</span> <span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">pszType</span><span class="p">,</span> <span class="n">cchType</span><span class="p">)</span>
|
|
|
|
<span class="c1"># ## Version stuff ## #</span>
|
|
|
|
<span class="nd">@VersionProxy</span><span class="p">(</span><span class="s2">"GetFileVersionInfoA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetFileVersionInfoA</span><span class="p">(</span><span class="n">lptstrFilename</span><span class="p">,</span> <span class="n">dwHandle</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwLen</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpData</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">dwLen</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">lpData</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">dwLen</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpData</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetFileVersionInfoA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lptstrFilename</span><span class="p">,</span> <span class="n">dwHandle</span><span class="p">,</span> <span class="n">dwLen</span><span class="p">,</span> <span class="n">lpData</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@VersionProxy</span><span class="p">(</span><span class="s2">"GetFileVersionInfoW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetFileVersionInfoW</span><span class="p">(</span><span class="n">lptstrFilename</span><span class="p">,</span> <span class="n">dwHandle</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">dwLen</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">lpData</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">dwLen</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">lpData</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">dwLen</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">lpData</span><span class="p">)</span>
|
|
<span class="k">return</span> <span class="n">GetFileVersionInfoA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lptstrFilename</span><span class="p">,</span> <span class="n">dwHandle</span><span class="p">,</span> <span class="n">dwLen</span><span class="p">,</span> <span class="n">lpData</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@VersionProxy</span><span class="p">(</span><span class="s2">"GetFileVersionInfoSizeA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetFileVersionInfoSizeA</span><span class="p">(</span><span class="n">lptstrFilename</span><span class="p">,</span> <span class="n">lpdwHandle</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">lpdwHandle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">lpdwHandle</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">DWORD</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">GetFileVersionInfoSizeA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lptstrFilename</span><span class="p">,</span> <span class="n">lpdwHandle</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@VersionProxy</span><span class="p">(</span><span class="s2">"GetFileVersionInfoSizeW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">GetFileVersionInfoSizeW</span><span class="p">(</span><span class="n">lptstrFilename</span><span class="p">,</span> <span class="n">lpdwHandle</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="n">lpdwHandle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
|
<span class="n">lpdwHandle</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">DWORD</span><span class="p">())</span>
|
|
<span class="k">return</span> <span class="n">GetFileVersionInfoSizeW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lptstrFilename</span><span class="p">,</span> <span class="n">lpdwHandle</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@VersionProxy</span><span class="p">(</span><span class="s2">"VerQueryValueA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">VerQueryValueA</span><span class="p">(</span><span class="n">pBlock</span><span class="p">,</span> <span class="n">lpSubBlock</span><span class="p">,</span> <span class="n">lplpBuffer</span><span class="p">,</span> <span class="n">puLen</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">VerQueryValueA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pBlock</span><span class="p">,</span> <span class="n">lpSubBlock</span><span class="p">,</span> <span class="n">lplpBuffer</span><span class="p">,</span> <span class="n">puLen</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@VersionProxy</span><span class="p">(</span><span class="s2">"VerQueryValueW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">VerQueryValueW</span><span class="p">(</span><span class="n">pBlock</span><span class="p">,</span> <span class="n">lpSubBlock</span><span class="p">,</span> <span class="n">lplpBuffer</span><span class="p">,</span> <span class="n">puLen</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">VerQueryValueW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pBlock</span><span class="p">,</span> <span class="n">lpSubBlock</span><span class="p">,</span> <span class="n">lplpBuffer</span><span class="p">,</span> <span class="n">puLen</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># ## Ole32Proxy (COM STUFF) ## #</span>
|
|
|
|
<span class="c1"># IMPORTANT:</span>
|
|
<span class="c1"># Functions that returns HRESULT (like CoInitializeEx) will raise if HRESULT is an error</span>
|
|
<span class="c1"># even if there is no error check on the return value</span>
|
|
<span class="nd">@Ole32Proxy</span><span class="p">(</span><span class="s1">'CoInitializeEx'</span><span class="p">,</span> <span class="n">no_error_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CoInitializeEx</span><span class="p">(</span><span class="n">pvReserved</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwCoInit</span><span class="o">=</span><span class="n">COINIT_MULTITHREADED</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CoInitializeEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pvReserved</span><span class="p">,</span> <span class="n">dwCoInit</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Ole32Proxy</span><span class="p">(</span><span class="s1">'CoInitializeSecurity'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CoInitializeSecurity</span><span class="p">(</span><span class="n">pSecDesc</span><span class="p">,</span> <span class="n">cAuthSvc</span><span class="p">,</span> <span class="n">asAuthSvc</span><span class="p">,</span> <span class="n">pReserved1</span><span class="p">,</span> <span class="n">dwAuthnLevel</span><span class="p">,</span> <span class="n">dwImpLevel</span><span class="p">,</span> <span class="n">pAuthList</span><span class="p">,</span> <span class="n">dwCapabilities</span><span class="p">,</span> <span class="n">pReserved3</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CoInitializeSecurity</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pSecDesc</span><span class="p">,</span> <span class="n">cAuthSvc</span><span class="p">,</span> <span class="n">asAuthSvc</span><span class="p">,</span> <span class="n">pReserved1</span><span class="p">,</span> <span class="n">dwAuthnLevel</span><span class="p">,</span> <span class="n">dwImpLevel</span><span class="p">,</span> <span class="n">pAuthList</span><span class="p">,</span> <span class="n">dwCapabilities</span><span class="p">,</span> <span class="n">pReserved3</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Ole32Proxy</span><span class="p">(</span><span class="s1">'CoCreateInstance'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CoCreateInstance</span><span class="p">(</span><span class="n">rclsid</span><span class="p">,</span> <span class="n">pUnkOuter</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwClsContext</span><span class="o">=</span><span class="n">CLSCTX_INPROC_SERVER</span><span class="p">,</span> <span class="n">riid</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">,</span> <span class="n">ppv</span><span class="o">=</span><span class="n">NeededParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CoCreateInstance</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">rclsid</span><span class="p">,</span> <span class="n">pUnkOuter</span><span class="p">,</span> <span class="n">dwClsContext</span><span class="p">,</span> <span class="n">riid</span><span class="p">,</span> <span class="n">ppv</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Ole32Proxy</span><span class="p">(</span><span class="s1">'CoCreateInstanceEx'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CoCreateInstanceEx</span><span class="p">(</span><span class="n">rclsid</span><span class="p">,</span> <span class="n">punkOuter</span><span class="p">,</span> <span class="n">dwClsCtx</span><span class="p">,</span> <span class="n">pServerInfo</span><span class="p">,</span> <span class="n">dwCount</span><span class="p">,</span> <span class="n">pResults</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CoCreateInstanceEx</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">rclsid</span><span class="p">,</span> <span class="n">punkOuter</span><span class="p">,</span> <span class="n">dwClsCtx</span><span class="p">,</span> <span class="n">pServerInfo</span><span class="p">,</span> <span class="n">dwCount</span><span class="p">,</span> <span class="n">pResults</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Ole32Proxy</span><span class="p">(</span><span class="s1">'CoGetInterceptor'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CoGetInterceptor</span><span class="p">(</span><span class="n">iidIntercepted</span><span class="p">,</span> <span class="n">punkOuter</span><span class="p">,</span> <span class="n">iid</span><span class="p">,</span> <span class="n">ppv</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CoGetInterceptor</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">iidIntercepted</span><span class="p">,</span> <span class="n">punkOuter</span><span class="p">,</span> <span class="n">iid</span><span class="p">,</span> <span class="n">ppv</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Ole32Proxy</span><span class="p">(</span><span class="s1">'CLSIDFromProgID'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CLSIDFromProgID</span><span class="p">(</span><span class="n">lpszProgID</span><span class="p">,</span> <span class="n">lpclsid</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CLSIDFromProgID</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpszProgID</span><span class="p">,</span> <span class="n">lpclsid</span><span class="p">)</span>
|
|
|
|
<span class="c1"># ## Shell32 ## #</span>
|
|
|
|
<span class="nd">@Shell32Proxy</span><span class="p">(</span><span class="s1">'ShellExecuteA'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ShellExecuteA</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">lpOperation</span><span class="p">,</span> <span class="n">lpFile</span><span class="p">,</span> <span class="n">lpParameters</span><span class="p">,</span> <span class="n">lpDirectory</span><span class="p">,</span> <span class="n">nShowCmd</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ShellExecuteA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">lpOperation</span><span class="p">,</span> <span class="n">lpFile</span><span class="p">,</span> <span class="n">lpParameters</span><span class="p">,</span> <span class="n">lpDirectory</span><span class="p">,</span> <span class="n">nShowCmd</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Shell32Proxy</span><span class="p">(</span><span class="s1">'ShellExecuteW'</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ShellExecuteW</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">lpOperation</span><span class="p">,</span> <span class="n">lpFile</span><span class="p">,</span> <span class="n">lpParameters</span><span class="p">,</span> <span class="n">lpDirectory</span><span class="p">,</span> <span class="n">nShowCmd</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ShellExecuteW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hwnd</span><span class="p">,</span> <span class="n">lpOperation</span><span class="p">,</span> <span class="n">lpFile</span><span class="p">,</span> <span class="n">lpParameters</span><span class="p">,</span> <span class="n">lpDirectory</span><span class="p">,</span> <span class="n">nShowCmd</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Transactions #</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateFileTransactedA"</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">valid_handle_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateFileTransactedA</span><span class="p">(</span><span class="n">lpFileName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">dwShareMode</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">,</span> <span class="n">dwCreationDisposition</span><span class="p">,</span> <span class="n">dwFlagsAndAttributes</span><span class="p">,</span> <span class="n">hTemplateFile</span><span class="p">,</span> <span class="n">hTransaction</span><span class="p">,</span> <span class="n">pusMiniVersion</span><span class="p">,</span> <span class="n">pExtendedParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateFileTransactedA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpFileName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">dwShareMode</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">,</span> <span class="n">dwCreationDisposition</span><span class="p">,</span> <span class="n">dwFlagsAndAttributes</span><span class="p">,</span> <span class="n">hTemplateFile</span><span class="p">,</span> <span class="n">hTransaction</span><span class="p">,</span> <span class="n">pusMiniVersion</span><span class="p">,</span> <span class="n">pExtendedParameter</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateFileTransactedW"</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">valid_handle_check</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateFileTransactedW</span><span class="p">(</span><span class="n">lpFileName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">dwShareMode</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">,</span> <span class="n">dwCreationDisposition</span><span class="p">,</span> <span class="n">dwFlagsAndAttributes</span><span class="p">,</span> <span class="n">hTemplateFile</span><span class="p">,</span> <span class="n">hTransaction</span><span class="p">,</span> <span class="n">pusMiniVersion</span><span class="p">,</span> <span class="n">pExtendedParameter</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateFileTransactedW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpFileName</span><span class="p">,</span> <span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">dwShareMode</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">,</span> <span class="n">dwCreationDisposition</span><span class="p">,</span> <span class="n">dwFlagsAndAttributes</span><span class="p">,</span> <span class="n">hTemplateFile</span><span class="p">,</span> <span class="n">hTransaction</span><span class="p">,</span> <span class="n">pusMiniVersion</span><span class="p">,</span> <span class="n">pExtendedParameter</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Ktmw32Proxy</span><span class="p">(</span><span class="s2">"CommitTransaction"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CommitTransaction</span><span class="p">(</span><span class="n">TransactionHandle</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CommitTransaction</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">TransactionHandle</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Ktmw32Proxy</span><span class="p">(</span><span class="s2">"CreateTransaction"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateTransaction</span><span class="p">(</span><span class="n">lpTransactionAttributes</span><span class="p">,</span> <span class="n">UOW</span><span class="p">,</span> <span class="n">CreateOptions</span><span class="p">,</span> <span class="n">IsolationLevel</span><span class="p">,</span> <span class="n">IsolationFlags</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">,</span> <span class="n">Description</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateTransaction</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpTransactionAttributes</span><span class="p">,</span> <span class="n">UOW</span><span class="p">,</span> <span class="n">CreateOptions</span><span class="p">,</span> <span class="n">IsolationLevel</span><span class="p">,</span> <span class="n">IsolationFlags</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">,</span> <span class="n">Description</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Ktmw32Proxy</span><span class="p">(</span><span class="s2">"RollbackTransaction"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">RollbackTransaction</span><span class="p">(</span><span class="n">TransactionHandle</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">RollbackTransaction</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">TransactionHandle</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@Ktmw32Proxy</span><span class="p">(</span><span class="s2">"OpenTransaction"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">OpenTransaction</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">TransactionId</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">OpenTransaction</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="p">,</span> <span class="n">TransactionId</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Pipe</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateNamedPipeA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateNamedPipeA</span><span class="p">(</span><span class="n">lpName</span><span class="p">,</span> <span class="n">dwOpenMode</span><span class="p">,</span> <span class="n">dwPipeMode</span><span class="p">,</span> <span class="n">nMaxInstances</span><span class="p">,</span> <span class="n">nOutBufferSize</span><span class="p">,</span> <span class="n">nInBufferSize</span><span class="p">,</span> <span class="n">nDefaultTimeOut</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateNamedPipeA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpName</span><span class="p">,</span> <span class="n">dwOpenMode</span><span class="p">,</span> <span class="n">dwPipeMode</span><span class="p">,</span> <span class="n">nMaxInstances</span><span class="p">,</span> <span class="n">nOutBufferSize</span><span class="p">,</span> <span class="n">nInBufferSize</span><span class="p">,</span> <span class="n">nDefaultTimeOut</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"CreateNamedPipeW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">CreateNamedPipeW</span><span class="p">(</span><span class="n">lpName</span><span class="p">,</span> <span class="n">dwOpenMode</span><span class="p">,</span> <span class="n">dwPipeMode</span><span class="p">,</span> <span class="n">nMaxInstances</span><span class="p">,</span> <span class="n">nOutBufferSize</span><span class="p">,</span> <span class="n">nInBufferSize</span><span class="p">,</span> <span class="n">nDefaultTimeOut</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">CreateNamedPipeW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lpName</span><span class="p">,</span> <span class="n">dwOpenMode</span><span class="p">,</span> <span class="n">dwPipeMode</span><span class="p">,</span> <span class="n">nMaxInstances</span><span class="p">,</span> <span class="n">nOutBufferSize</span><span class="p">,</span> <span class="n">nInBufferSize</span><span class="p">,</span> <span class="n">nDefaultTimeOut</span><span class="p">,</span> <span class="n">lpSecurityAttributes</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"ConnectNamedPipe"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ConnectNamedPipe</span><span class="p">(</span><span class="n">hNamedPipe</span><span class="p">,</span> <span class="n">lpOverlapped</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ConnectNamedPipe</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hNamedPipe</span><span class="p">,</span> <span class="n">lpOverlapped</span><span class="p">)</span>
|
|
|
|
<span class="nd">@Kernel32Proxy</span><span class="p">(</span><span class="s2">"SetNamedPipeHandleState"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">SetNamedPipeHandleState</span><span class="p">(</span><span class="n">hNamedPipe</span><span class="p">,</span> <span class="n">lpMode</span><span class="p">,</span> <span class="n">lpMaxCollectionCount</span><span class="p">,</span> <span class="n">lpCollectDataTimeout</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">SetNamedPipeHandleState</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">hNamedPipe</span><span class="p">,</span> <span class="n">lpMode</span><span class="p">,</span> <span class="n">lpMaxCollectionCount</span><span class="p">,</span> <span class="n">lpCollectDataTimeout</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># Eventlog stuff</span>
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtOpenLog"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtOpenLog</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">Path</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtOpenLog</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">Path</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtClose"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtClose</span><span class="p">(</span><span class="n">Object</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtClose</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Object</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtQuery"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtQuery</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">Path</span><span class="p">,</span> <span class="n">Query</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtQuery</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">Path</span><span class="p">,</span> <span class="n">Query</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtNext"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtNext</span><span class="p">(</span><span class="n">ResultSet</span><span class="p">,</span> <span class="n">EventArraySize</span><span class="p">,</span> <span class="n">EventArray</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">Returned</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtNext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ResultSet</span><span class="p">,</span> <span class="n">EventArraySize</span><span class="p">,</span> <span class="n">EventArray</span><span class="p">,</span> <span class="n">Timeout</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">Returned</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtCreateRenderContext"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtCreateRenderContext</span><span class="p">(</span><span class="n">ValuePathsCount</span><span class="p">,</span> <span class="n">ValuePaths</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtCreateRenderContext</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ValuePathsCount</span><span class="p">,</span> <span class="n">ValuePaths</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtRender"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtRender</span><span class="p">(</span><span class="n">Context</span><span class="p">,</span> <span class="n">Fragment</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">BufferSize</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">BufferUsed</span><span class="p">,</span> <span class="n">PropertyCount</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtRender</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Context</span><span class="p">,</span> <span class="n">Fragment</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">BufferSize</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">BufferUsed</span><span class="p">,</span> <span class="n">PropertyCount</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtOpenChannelEnum"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtOpenChannelEnum</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtOpenChannelEnum</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtNextChannelPath"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtNextChannelPath</span><span class="p">(</span><span class="n">ChannelEnum</span><span class="p">,</span> <span class="n">ChannelPathBufferSize</span><span class="p">,</span> <span class="n">ChannelPathBuffer</span><span class="p">,</span> <span class="n">ChannelPathBufferUsed</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtNextChannelPath</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ChannelEnum</span><span class="p">,</span> <span class="n">ChannelPathBufferSize</span><span class="p">,</span> <span class="n">ChannelPathBuffer</span><span class="p">,</span> <span class="n">ChannelPathBufferUsed</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtOpenPublisherEnum"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtOpenPublisherEnum</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtOpenPublisherEnum</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtNextPublisherId"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtNextPublisherId</span><span class="p">(</span><span class="n">PublisherEnum</span><span class="p">,</span> <span class="n">PublisherIdBufferSize</span><span class="p">,</span> <span class="n">PublisherIdBuffer</span><span class="p">,</span> <span class="n">PublisherIdBufferUsed</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtNextPublisherId</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PublisherEnum</span><span class="p">,</span> <span class="n">PublisherIdBufferSize</span><span class="p">,</span> <span class="n">PublisherIdBuffer</span><span class="p">,</span> <span class="n">PublisherIdBufferUsed</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtGetLogInfo"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtGetLogInfo</span><span class="p">(</span><span class="n">Log</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">PropertyValueBufferSize</span><span class="p">,</span> <span class="n">PropertyValueBuffer</span><span class="p">,</span> <span class="n">PropertyValueBufferUsed</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtGetLogInfo</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Log</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">PropertyValueBufferSize</span><span class="p">,</span> <span class="n">PropertyValueBuffer</span><span class="p">,</span> <span class="n">PropertyValueBufferUsed</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtOpenChannelConfig"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtOpenChannelConfig</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">ChannelPath</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtOpenChannelConfig</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">ChannelPath</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtGetChannelConfigProperty"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtGetChannelConfigProperty</span><span class="p">(</span><span class="n">ChannelConfig</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">PropertyValueBufferSize</span><span class="p">,</span> <span class="n">PropertyValueBuffer</span><span class="p">,</span> <span class="n">PropertyValueBufferUsed</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtGetChannelConfigProperty</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ChannelConfig</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">PropertyValueBufferSize</span><span class="p">,</span> <span class="n">PropertyValueBuffer</span><span class="p">,</span> <span class="n">PropertyValueBufferUsed</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtOpenPublisherMetadata"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtOpenPublisherMetadata</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">PublisherIdentity</span><span class="p">,</span> <span class="n">LogFilePath</span><span class="p">,</span> <span class="n">Locale</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtOpenPublisherMetadata</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">Session</span><span class="p">,</span> <span class="n">PublisherIdentity</span><span class="p">,</span> <span class="n">LogFilePath</span><span class="p">,</span> <span class="n">Locale</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtOpenEventMetadataEnum"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtOpenEventMetadataEnum</span><span class="p">(</span><span class="n">PublisherMetadata</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtOpenEventMetadataEnum</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PublisherMetadata</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtNextEventMetadata"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtNextEventMetadata</span><span class="p">(</span><span class="n">EventMetadataEnum</span><span class="p">,</span> <span class="n">Flags</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtNextEventMetadata</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">EventMetadataEnum</span><span class="p">,</span> <span class="n">Flags</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtGetEventMetadataProperty"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtGetEventMetadataProperty</span><span class="p">(</span><span class="n">EventMetadata</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">EventMetadataPropertyBufferSize</span><span class="p">,</span> <span class="n">EventMetadataPropertyBuffer</span><span class="p">,</span> <span class="n">EventMetadataPropertyBufferUsed</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtGetEventMetadataProperty</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">EventMetadata</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">EventMetadataPropertyBufferSize</span><span class="p">,</span> <span class="n">EventMetadataPropertyBuffer</span><span class="p">,</span> <span class="n">EventMetadataPropertyBufferUsed</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtGetPublisherMetadataProperty"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtGetPublisherMetadataProperty</span><span class="p">(</span><span class="n">PublisherMetadata</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">PublisherMetadataPropertyBufferSize</span><span class="p">,</span> <span class="n">PublisherMetadataPropertyBuffer</span><span class="p">,</span> <span class="n">PublisherMetadataPropertyBufferUsed</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtGetPublisherMetadataProperty</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PublisherMetadata</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">PublisherMetadataPropertyBufferSize</span><span class="p">,</span> <span class="n">PublisherMetadataPropertyBuffer</span><span class="p">,</span> <span class="n">PublisherMetadataPropertyBufferUsed</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtGetObjectArraySize"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtGetObjectArraySize</span><span class="p">(</span><span class="n">ObjectArray</span><span class="p">,</span> <span class="n">ObjectArraySize</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtGetObjectArraySize</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ObjectArray</span><span class="p">,</span> <span class="n">ObjectArraySize</span><span class="p">)</span>
|
|
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtGetObjectArrayProperty"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtGetObjectArrayProperty</span><span class="p">(</span><span class="n">ObjectArray</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">ArrayIndex</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">PropertyValueBufferSize</span><span class="p">,</span> <span class="n">PropertyValueBuffer</span><span class="p">,</span> <span class="n">PropertyValueBufferUsed</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtGetObjectArrayProperty</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">ObjectArray</span><span class="p">,</span> <span class="n">PropertyId</span><span class="p">,</span> <span class="n">ArrayIndex</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">PropertyValueBufferSize</span><span class="p">,</span> <span class="n">PropertyValueBuffer</span><span class="p">,</span> <span class="n">PropertyValueBufferUsed</span><span class="p">)</span>
|
|
|
|
<span class="nd">@WevtapiProxy</span><span class="p">(</span><span class="s2">"EvtFormatMessage"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">EvtFormatMessage</span><span class="p">(</span><span class="n">PublisherMetadata</span><span class="p">,</span> <span class="n">Event</span><span class="p">,</span> <span class="n">MessageId</span><span class="p">,</span> <span class="n">ValueCount</span><span class="p">,</span> <span class="n">Values</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">BufferSize</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">BufferUsed</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">EvtFormatMessage</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">PublisherMetadata</span><span class="p">,</span> <span class="n">Event</span><span class="p">,</span> <span class="n">MessageId</span><span class="p">,</span> <span class="n">ValueCount</span><span class="p">,</span> <span class="n">Values</span><span class="p">,</span> <span class="n">Flags</span><span class="p">,</span> <span class="n">BufferSize</span><span class="p">,</span> <span class="n">Buffer</span><span class="p">,</span> <span class="n">BufferUsed</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># ShlwapiProxy</span>
|
|
|
|
<span class="nd">@ShlwapiProxy</span><span class="p">(</span><span class="s2">"StrStrIW"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">StrStrIW</span><span class="p">(</span><span class="n">pszFirst</span><span class="p">,</span> <span class="n">pszSrch</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">StrStrIW</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pszFirst</span><span class="p">,</span> <span class="n">pszSrch</span><span class="p">)</span>
|
|
|
|
<span class="nd">@ShlwapiProxy</span><span class="p">(</span><span class="s2">"StrStrIA"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">StrStrIA</span><span class="p">(</span><span class="n">pszFirst</span><span class="p">,</span> <span class="n">pszSrch</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">StrStrIA</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">pszFirst</span><span class="p">,</span> <span class="n">pszSrch</span><span class="p">)</span>
|
|
|
|
<span class="nd">@ShlwapiProxy</span><span class="p">(</span><span class="s2">"IsOS"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">IsOS</span><span class="p">(</span><span class="n">dwOS</span><span class="p">):</span>
|
|
<span class="k">if</span> <span class="ow">not</span> <span class="n">is_implemented</span><span class="p">(</span><span class="n">IsOS</span><span class="p">)</span> <span class="ow">and</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">version</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o"><</span> <span class="mi">6</span><span class="p">:</span>
|
|
<span class="c1"># Before Vista:</span>
|
|
<span class="c1"># If so use ordinal 437 from DOCUMENTATION</span>
|
|
<span class="c1"># https://docs.microsoft.com/en-us/windows/desktop/api/shlwapi/nf-shlwapi-isos#remarks</span>
|
|
<span class="n">IsOS</span><span class="o">.</span><span class="n">proxy</span><span class="o">.</span><span class="n">func_name</span> <span class="o">=</span> <span class="mi">437</span>
|
|
<span class="k">return</span> <span class="n">IsOS</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">dwOS</span><span class="p">)</span>
|
|
|
|
|
|
<span class="c1"># OleaccProxy</span>
|
|
|
|
<span class="nd">@OleaccProxy</span><span class="p">(</span><span class="s2">"ObjectFromLresult"</span><span class="p">)</span>
|
|
<span class="k">def</span> <span class="nf">ObjectFromLresult</span><span class="p">(</span><span class="n">lResult</span><span class="p">,</span> <span class="n">riid</span><span class="p">,</span> <span class="n">wParam</span><span class="p">,</span> <span class="n">ppvObject</span><span class="p">):</span>
|
|
<span class="k">return</span> <span class="n">ObjectFromLresult</span><span class="o">.</span><span class="n">ctypes_function</span><span class="p">(</span><span class="n">lResult</span><span class="p">,</span> <span class="n">riid</span><span class="p">,</span> <span class="n">wParam</span><span class="p">,</span> <span class="n">ppvObject</span><span class="p">)</span>
|
|
</pre></div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
|
<div class="sphinxsidebarwrapper">
|
|
<div id="searchbox" style="display: none" role="search">
|
|
<h3>Quick search</h3>
|
|
<div class="searchformwrapper">
|
|
<form class="search" action="../../search.html" method="get">
|
|
<input type="text" name="q" />
|
|
<input type="submit" value="Go" />
|
|
<input type="hidden" name="check_keywords" value="yes" />
|
|
<input type="hidden" name="area" value="default" />
|
|
</form>
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">$('#searchbox').show(0);</script>
|
|
</div>
|
|
</div>
|
|
<div class="clearer"></div>
|
|
</div>
|
|
<div class="related" role="navigation" aria-label="related navigation">
|
|
<h3>Navigation</h3>
|
|
<ul>
|
|
<li class="right" style="margin-right: 10px">
|
|
<a href="../../genindex.html" title="General Index"
|
|
>index</a></li>
|
|
<li class="right" >
|
|
<a href="../../py-modindex.html" title="Python Module Index"
|
|
>modules</a> |</li>
|
|
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.4 documentation</a> »</li>
|
|
<li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> »</li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer" role="contentinfo">
|
|
© Copyright 2015, Clement Rouault.
|
|
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
|
|
</div>
|
|
</body>
|
|
</html> |