mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
298 lines
22 KiB
HTML
298 lines
22 KiB
HTML
<!DOCTYPE html>
|
||
|
||
<html lang="en" data-content_root="./">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
||
|
||
<title>4. windows.winproxy – Windows API — PythonForWindows 1.0.2 documentation</title>
|
||
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=fa44fd50" />
|
||
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=def86cc0" />
|
||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.css?v=957880af" />
|
||
|
||
<script src="_static/documentation_options.js?v=1ed6394b"></script>
|
||
<script src="_static/doctools.js?v=9a2dae69"></script>
|
||
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
|
||
|
||
<link rel="index" title="Index" href="genindex.html" />
|
||
<link rel="search" title="Search" href="search.html" />
|
||
<link rel="next" title="5. windows.security – Security Descriptor & related" href="security.html" />
|
||
<link rel="prev" title="3. windows.native_exec – Native Code Execution" href="native_exec.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="right" >
|
||
<a href="security.html" title="5. windows.security – Security Descriptor & related"
|
||
accesskey="N">next</a> |</li>
|
||
<li class="right" >
|
||
<a href="native_exec.html" title="3. windows.native_exec – Native Code Execution"
|
||
accesskey="P">previous</a> |</li>
|
||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">4. </span><code class="docutils literal notranslate"><span class="pre">windows.winproxy</span></code> – Windows API</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="document">
|
||
<div class="documentwrapper">
|
||
<div class="bodywrapper">
|
||
<div class="body" role="main">
|
||
|
||
<section id="module-windows.winproxy">
|
||
<span id="windows-winproxy-windows-api"></span><h1><span class="section-number">4. </span><code class="docutils literal notranslate"><span class="pre">windows.winproxy</span></code> – Windows API<a class="headerlink" href="#module-windows.winproxy" title="Link to this heading">¶</a></h1>
|
||
<p><a class="reference internal" href="#module-windows.winproxy" title="windows.winproxy"><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.winproxy</span></code></a> tries to be a pythontic wrapper around windows API of various DLL.
|
||
It also heavily relies on <code class="xref py py-mod docutils literal notranslate"><span class="pre">ctypes</span></code> and <a class="reference internal" href="winfuncs_generated.html#module-windows.generated_def.winfuncs" title="windows.generated_def.winfuncs"><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.generated_def.winfuncs</span></code></a></p>
|
||
<dl class="simple">
|
||
<dt>Here are the things to know about <a class="reference internal" href="#module-windows.winproxy" title="windows.winproxy"><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.winproxy</span></code></a></dt><dd><ul class="simple">
|
||
<li><p>All of this is based on <a class="reference internal" href="winfuncs_generated.html#module-windows.generated_def.winfuncs" title="windows.generated_def.winfuncs"><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.generated_def.winfuncs</span></code></a></p></li>
|
||
<li><p>DLL is loaded the first time an API of it is called</p></li>
|
||
<li><p>All parameters can be passed by ordinal or keyword</p></li>
|
||
<li><p>The call will fail if an argument with default value <code class="docutils literal notranslate"><span class="pre">NeededParamater</span></code> have been called without another value.</p></li>
|
||
<li><p>The call will raise a subclass of <code class="xref py py-class docutils literal notranslate"><span class="pre">WindowsError</span></code> if it fails.</p></li>
|
||
<li><p>Some functions are ‘transparent proxy’ it means that all parameters are mandatory</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
<section id="example-virtualalloc">
|
||
<h2><span class="section-number">4.1. </span>Example: <code class="docutils literal notranslate"><span class="pre">VirtualAlloc</span></code><a class="headerlink" href="#example-virtualalloc" title="Link to this heading">¶</a></h2>
|
||
<p>Exemple with the function <cite>VirtualAlloc</cite> in <a class="reference internal" href="#module-windows.winproxy" title="windows.winproxy"><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.winproxy</span></code></a></p>
|
||
<p>Documentation:</p>
|
||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">windows</span>
|
||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAlloc</span>
|
||
<span class="c1"># <function VirtualAlloc at 0x02ED63F0></span>
|
||
|
||
<span class="n">help</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAlloc</span><span class="p">)</span>
|
||
<span class="c1"># Help on function VirtualAlloc in module windows.winproxy:</span>
|
||
<span class="c1"># VirtualAlloc(lpAddress=0, dwSize=NeededParameter, flAllocationType=MEM_COMMIT(0x1000L), flProtect=PAGE_EXECUTE_READWRITE(0x40L))</span>
|
||
<span class="c1"># Errcheck:</span>
|
||
<span class="c1"># raise Kernel32Error if result is 0</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Calling it</p>
|
||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">windows</span>
|
||
|
||
<span class="c1"># Ordinal arguments</span>
|
||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAlloc</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mh">0x1000</span><span class="p">)</span>
|
||
<span class="mi">34537472</span>
|
||
|
||
<span class="c1"># Keyword arguments</span>
|
||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAlloc</span><span class="p">(</span><span class="n">dwSize</span><span class="o">=</span><span class="mh">0x1000</span><span class="p">)</span>
|
||
<span class="mi">34603008</span>
|
||
|
||
<span class="c1"># NeededParameter must be provided</span>
|
||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAlloc</span><span class="p">()</span>
|
||
<span class="sd">"""</span>
|
||
<span class="sd">Traceback (most recent call last):</span>
|
||
<span class="sd">File "<stdin>", line 1, in <module></span>
|
||
<span class="sd">File "windows\winproxy.py", line 264, in VirtualAlloc</span>
|
||
<span class="sd"> return VirtualAlloc.ctypes_function(lpAddress, dwSize, flAllocationType, flProtect)</span>
|
||
<span class="sd">File "windows\winproxy.py", line 130, in perform_call</span>
|
||
<span class="sd"> raise TypeError("{0}: Missing Mandatory parameter <{1}>".format(self.func_name, param_name))</span>
|
||
<span class="sd">TypeError: VirtualAlloc: Missing Mandatory parameter <dwSize></span>
|
||
<span class="sd">"""</span>
|
||
|
||
<span class="c1"># Error raises exception</span>
|
||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualAlloc</span><span class="p">(</span><span class="n">dwSize</span><span class="o">=</span><span class="mh">0xffffffff</span><span class="p">)</span>
|
||
<span class="sd">"""</span>
|
||
<span class="sd">Traceback (most recent call last):</span>
|
||
<span class="sd">File "<stdin>", line 1, in <module></span>
|
||
<span class="sd">File "windows\winproxy.py", line 264, in VirtualAlloc</span>
|
||
<span class="sd"> return VirtualAlloc.ctypes_function(lpAddress, dwSize, flAllocationType, flProtect)</span>
|
||
<span class="sd">File "windows\winproxy.py", line 133, in perform_call</span>
|
||
<span class="sd"> return self._cprototyped(*args)</span>
|
||
<span class="sd">File "windows\winproxy.py", line 59, in kernel32_error_check</span>
|
||
<span class="sd"> raise WinproxyError(func_name)</span>
|
||
<span class="sd">windows.winproxy.error.WinproxyError: None: [Error 8] Not enough storage is available to process this command.</span>
|
||
<span class="sd">"""</span>
|
||
</pre></div>
|
||
</div>
|
||
</section>
|
||
<section id="helper-functions">
|
||
<h2><span class="section-number">4.2. </span>Helper functions<a class="headerlink" href="#helper-functions" title="Link to this heading">¶</a></h2>
|
||
<dl class="py function">
|
||
<dt class="sig sig-object py" id="windows.winproxy.is_implemented">
|
||
<span class="sig-prename descclassname"><span class="pre">windows.winproxy.</span></span><span class="sig-name descname"><span class="pre">is_implemented</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">apiproxy</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winproxy/apiproxy.html#is_implemented"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.winproxy.is_implemented" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Return <code class="xref py py-obj docutils literal notranslate"><span class="pre">True</span></code> if DLL/Api can be found</p>
|
||
<dl>
|
||
<dt>Example:</dt><dd><div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">is_implemented</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">NtWow64WriteVirtualMemory64</span><span class="p">)</span>
|
||
<span class="go">True</span>
|
||
</pre></div>
|
||
</div>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py function">
|
||
<dt class="sig sig-object py" id="windows.winproxy.resolve">
|
||
<span class="sig-prename descclassname"><span class="pre">windows.winproxy.</span></span><span class="sig-name descname"><span class="pre">resolve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">apiproxy</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winproxy/apiproxy.html#resolve"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.winproxy.resolve" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Resolve the address of <code class="docutils literal notranslate"><span class="pre">apiproxy</span></code>. Might raise if <code class="docutils literal notranslate"><span class="pre">apiproxy</span></code> is not implemented</p>
|
||
<dl>
|
||
<dt>Example:</dt><dd><div class="doctest highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">hex</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">resolve</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">NtWow64WriteVirtualMemory64</span><span class="p">))</span>
|
||
<span class="go">'0x77340520'</span>
|
||
</pre></div>
|
||
</div>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="winproxyerror">
|
||
<h2><span class="section-number">4.3. </span>WinproxyError<a class="headerlink" href="#winproxyerror" title="Link to this heading">¶</a></h2>
|
||
<p>All errors raised by winproxy functions are instance of <a class="reference internal" href="#windows.winproxy.WinproxyError" title="windows.winproxy.WinproxyError"><code class="xref py py-class docutils literal notranslate"><span class="pre">WinproxyError</span></code></a> (or subclasses)</p>
|
||
<dl class="py class">
|
||
<dt class="sig sig-object py" id="windows.winproxy.WinproxyError">
|
||
<em class="property"><span class="pre">class</span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">windows.winproxy.</span></span><span class="sig-name descname"><span class="pre">WinproxyError</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func_name</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">error_code</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winproxy/error.html#WinproxyError"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#windows.winproxy.WinproxyError" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">OSError</span></code></p>
|
||
<dl class="py attribute">
|
||
<dt class="sig sig-object py" id="windows.winproxy.WinproxyError.api_name">
|
||
<span class="sig-name descname"><span class="pre">api_name</span></span><a class="headerlink" href="#windows.winproxy.WinproxyError.api_name" title="Link to this definition">¶</a></dt>
|
||
<dd><p>The name of the API that raised the exception</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="windows.winproxy.WinproxyError.add_note">
|
||
<span class="sig-name descname"><span class="pre">add_note</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#windows.winproxy.WinproxyError.add_note" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Exception.add_note(note) –
|
||
add a note to the exception</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py attribute">
|
||
<dt class="sig sig-object py" id="windows.winproxy.WinproxyError.errno">
|
||
<span class="sig-name descname"><span class="pre">errno</span></span><a class="headerlink" href="#windows.winproxy.WinproxyError.errno" title="Link to this definition">¶</a></dt>
|
||
<dd><p>POSIX exception code</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py attribute">
|
||
<dt class="sig sig-object py" id="windows.winproxy.WinproxyError.filename">
|
||
<span class="sig-name descname"><span class="pre">filename</span></span><a class="headerlink" href="#windows.winproxy.WinproxyError.filename" title="Link to this definition">¶</a></dt>
|
||
<dd><p>exception filename</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py attribute">
|
||
<dt class="sig sig-object py" id="windows.winproxy.WinproxyError.filename2">
|
||
<span class="sig-name descname"><span class="pre">filename2</span></span><a class="headerlink" href="#windows.winproxy.WinproxyError.filename2" title="Link to this definition">¶</a></dt>
|
||
<dd><p>second exception filename</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py attribute">
|
||
<dt class="sig sig-object py" id="windows.winproxy.WinproxyError.strerror">
|
||
<span class="sig-name descname"><span class="pre">strerror</span></span><a class="headerlink" href="#windows.winproxy.WinproxyError.strerror" title="Link to this definition">¶</a></dt>
|
||
<dd><p>exception strerror</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py attribute">
|
||
<dt class="sig sig-object py" id="windows.winproxy.WinproxyError.winerror">
|
||
<span class="sig-name descname"><span class="pre">winerror</span></span><a class="headerlink" href="#windows.winproxy.WinproxyError.winerror" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Win32 exception code</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="windows.winproxy.WinproxyError.with_traceback">
|
||
<span class="sig-name descname"><span class="pre">with_traceback</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#windows.winproxy.WinproxyError.with_traceback" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Exception.with_traceback(tb) –
|
||
set self.__traceback__ to tb and return self.</p>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
</section>
|
||
</section>
|
||
|
||
|
||
<div class="clearer"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||
<div class="sphinxsidebarwrapper">
|
||
<div>
|
||
<h3><a href="index.html">Table of Contents</a></h3>
|
||
<ul>
|
||
<li><a class="reference internal" href="#">4. <code class="docutils literal notranslate"><span class="pre">windows.winproxy</span></code> – Windows API</a><ul>
|
||
<li><a class="reference internal" href="#example-virtualalloc">4.1. Example: <code class="docutils literal notranslate"><span class="pre">VirtualAlloc</span></code></a></li>
|
||
<li><a class="reference internal" href="#helper-functions">4.2. Helper functions</a><ul>
|
||
<li><a class="reference internal" href="#windows.winproxy.is_implemented"><code class="docutils literal notranslate"><span class="pre">is_implemented()</span></code></a></li>
|
||
<li><a class="reference internal" href="#windows.winproxy.resolve"><code class="docutils literal notranslate"><span class="pre">resolve()</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#winproxyerror">4.3. WinproxyError</a><ul>
|
||
<li><a class="reference internal" href="#windows.winproxy.WinproxyError"><code class="docutils literal notranslate"><span class="pre">WinproxyError</span></code></a><ul>
|
||
<li><a class="reference internal" href="#windows.winproxy.WinproxyError.api_name"><code class="docutils literal notranslate"><span class="pre">api_name</span></code></a></li>
|
||
<li><a class="reference internal" href="#windows.winproxy.WinproxyError.add_note"><code class="docutils literal notranslate"><span class="pre">add_note()</span></code></a></li>
|
||
<li><a class="reference internal" href="#windows.winproxy.WinproxyError.errno"><code class="docutils literal notranslate"><span class="pre">errno</span></code></a></li>
|
||
<li><a class="reference internal" href="#windows.winproxy.WinproxyError.filename"><code class="docutils literal notranslate"><span class="pre">filename</span></code></a></li>
|
||
<li><a class="reference internal" href="#windows.winproxy.WinproxyError.filename2"><code class="docutils literal notranslate"><span class="pre">filename2</span></code></a></li>
|
||
<li><a class="reference internal" href="#windows.winproxy.WinproxyError.strerror"><code class="docutils literal notranslate"><span class="pre">strerror</span></code></a></li>
|
||
<li><a class="reference internal" href="#windows.winproxy.WinproxyError.winerror"><code class="docutils literal notranslate"><span class="pre">winerror</span></code></a></li>
|
||
<li><a class="reference internal" href="#windows.winproxy.WinproxyError.with_traceback"><code class="docutils literal notranslate"><span class="pre">with_traceback()</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
|
||
</div>
|
||
<div>
|
||
<h4>Previous topic</h4>
|
||
<p class="topless"><a href="native_exec.html"
|
||
title="previous chapter"><span class="section-number">3. </span><code class="docutils literal notranslate"><span class="pre">windows.native_exec</span></code> – Native Code Execution</a></p>
|
||
</div>
|
||
<div>
|
||
<h4>Next topic</h4>
|
||
<p class="topless"><a href="security.html"
|
||
title="next chapter"><span class="section-number">5. </span><code class="docutils literal notranslate"><span class="pre">windows.security</span></code> – Security Descriptor & related</a></p>
|
||
</div>
|
||
<div role="note" aria-label="source link">
|
||
<h3>This Page</h3>
|
||
<ul class="this-page-menu">
|
||
<li><a href="_sources/winproxy.rst.txt"
|
||
rel="nofollow">Show Source</a></li>
|
||
</ul>
|
||
</div>
|
||
<search id="searchbox" style="display: none" role="search">
|
||
<h3 id="searchlabel">Quick search</h3>
|
||
<div class="searchformwrapper">
|
||
<form class="search" action="search.html" method="get">
|
||
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
||
<input type="submit" value="Go" />
|
||
</form>
|
||
</div>
|
||
</search>
|
||
<script>document.getElementById('searchbox').style.display = "block"</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="right" >
|
||
<a href="security.html" title="5. windows.security – Security Descriptor & related"
|
||
>next</a> |</li>
|
||
<li class="right" >
|
||
<a href="native_exec.html" title="3. windows.native_exec – Native Code Execution"
|
||
>previous</a> |</li>
|
||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 1.0.2 documentation</a> »</li>
|
||
<li class="nav-item nav-item-this"><a href=""><span class="section-number">4. </span><code class="docutils literal notranslate"><span class="pre">windows.winproxy</span></code> – Windows API</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="footer" role="contentinfo">
|
||
© Copyright 2015-2020, Clement Rouault.
|
||
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 7.3.7.
|
||
</div>
|
||
</body>
|
||
</html> |