mirror of
https://github.com/hakril/PythonForWindows
synced 2026-06-08 14:31:45 +00:00
Updated online documentation for 0.6
This commit is contained in:
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
# Sphinx build info version 1
|
||||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
|
||||
config: fdedfd034d8970f3d8ed3da3263d316a
|
||||
config: 46ec48b2adfc0c477458709c63587450
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
||||
+13
-10
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>colorama.win32 — PythonForWindows 0.5 documentation</title>
|
||||
<title>colorama.win32 — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -45,15 +48,15 @@
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="k">import</span> <span class="n">LibraryLoader</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="kn">import</span> <span class="n">LibraryLoader</span>
|
||||
<span class="n">windll</span> <span class="o">=</span> <span class="n">LibraryLoader</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="kn">from</span> <span class="nn">ctypes</span> <span class="k">import</span> <span class="n">wintypes</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="kn">import</span> <span class="n">wintypes</span>
|
||||
<span class="k">except</span> <span class="p">(</span><span class="ne">AttributeError</span><span class="p">,</span> <span class="ne">ImportError</span><span class="p">):</span>
|
||||
<span class="n">windll</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">SetConsoleTextAttribute</span> <span class="o">=</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="kc">None</span>
|
||||
<span class="n">winapi_test</span> <span class="o">=</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="kc">None</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="k">import</span> <span class="n">byref</span><span class="p">,</span> <span class="n">Structure</span><span class="p">,</span> <span class="n">c_char</span><span class="p">,</span> <span class="n">POINTER</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="kn">import</span> <span class="n">byref</span><span class="p">,</span> <span class="n">Structure</span><span class="p">,</span> <span class="n">c_char</span><span class="p">,</span> <span class="n">POINTER</span>
|
||||
|
||||
<span class="n">COORD</span> <span class="o">=</span> <span class="n">wintypes</span><span class="o">.</span><span class="n">_COORD</span>
|
||||
|
||||
@@ -66,7 +69,7 @@
|
||||
<span class="p">(</span><span class="s2">"srWindow"</span><span class="p">,</span> <span class="n">wintypes</span><span class="o">.</span><span class="n">SMALL_RECT</span><span class="p">),</span>
|
||||
<span class="p">(</span><span class="s2">"dwMaximumWindowSize"</span><span class="p">,</span> <span class="n">COORD</span><span class="p">),</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">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'(</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">,</span><span class="si">%d</span><span class="s1">)'</span> <span class="o">%</span> <span class="p">(</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dwSize</span><span class="o">.</span><span class="n">Y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dwSize</span><span class="o">.</span><span class="n">X</span>
|
||||
<span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dwCursorPosition</span><span class="o">.</span><span class="n">Y</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dwCursorPosition</span><span class="o">.</span><span class="n">X</span>
|
||||
@@ -221,13 +224,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+42
-39
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>ctypes — PythonForWindows 0.5 documentation</title>
|
||||
<title>ctypes — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -43,20 +46,20 @@
|
||||
|
||||
<span class="n">__version__</span> <span class="o">=</span> <span class="s2">"1.1.0"</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Structure</span><span class="p">,</span> <span class="n">Array</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">_Pointer</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">CFuncPtr</span> <span class="k">as</span> <span class="n">_CFuncPtr</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">__version__</span> <span class="k">as</span> <span class="n">_ctypes_version</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">RTLD_LOCAL</span><span class="p">,</span> <span class="n">RTLD_GLOBAL</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">ArgumentError</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Structure</span><span class="p">,</span> <span class="n">Array</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">_Pointer</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">CFuncPtr</span> <span class="k">as</span> <span class="n">_CFuncPtr</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">__version__</span> <span class="k">as</span> <span class="n">_ctypes_version</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">RTLD_LOCAL</span><span class="p">,</span> <span class="n">RTLD_GLOBAL</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">ArgumentError</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">struct</span> <span class="k">import</span> <span class="n">calcsize</span> <span class="k">as</span> <span class="n">_calcsize</span>
|
||||
<span class="kn">from</span> <span class="nn">struct</span> <span class="kn">import</span> <span class="n">calcsize</span> <span class="k">as</span> <span class="n">_calcsize</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">__version__</span> <span class="o">!=</span> <span class="n">_ctypes_version</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">Exception</span><span class="p">(</span><span class="s2">"Version number mismatch"</span><span class="p">,</span> <span class="n">__version__</span><span class="p">,</span> <span class="n">_ctypes_version</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">_os</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"nt"</span><span class="p">,</span> <span class="s2">"ce"</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">FormatError</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">FormatError</span>
|
||||
|
||||
<span class="n">DEFAULT_MODE</span> <span class="o">=</span> <span class="n">RTLD_LOCAL</span>
|
||||
<span class="k">if</span> <span class="n">_os</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"posix"</span> <span class="ow">and</span> <span class="n">_sys</span><span class="o">.</span><span class="n">platform</span> <span class="o">==</span> <span class="s2">"darwin"</span><span class="p">:</span>
|
||||
@@ -68,7 +71,7 @@
|
||||
<span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">_os</span><span class="o">.</span><span class="n">uname</span><span class="p">()[</span><span class="mi">2</span><span class="p">]</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)[</span><span class="mi">0</span><span class="p">])</span> <span class="o"><</span> <span class="mi">8</span><span class="p">:</span>
|
||||
<span class="n">DEFAULT_MODE</span> <span class="o">=</span> <span class="n">RTLD_GLOBAL</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">FUNCFLAG_CDECL</span> <span class="k">as</span> <span class="n">_FUNCFLAG_CDECL</span><span class="p">,</span> \
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">FUNCFLAG_CDECL</span> <span class="k">as</span> <span class="n">_FUNCFLAG_CDECL</span><span class="p">,</span> \
|
||||
<span class="n">FUNCFLAG_PYTHONAPI</span> <span class="k">as</span> <span class="n">_FUNCFLAG_PYTHONAPI</span><span class="p">,</span> \
|
||||
<span class="n">FUNCFLAG_USE_ERRNO</span> <span class="k">as</span> <span class="n">_FUNCFLAG_USE_ERRNO</span><span class="p">,</span> \
|
||||
<span class="n">FUNCFLAG_USE_LASTERROR</span> <span class="k">as</span> <span class="n">_FUNCFLAG_USE_LASTERROR</span>
|
||||
@@ -145,8 +148,8 @@
|
||||
<span class="k">return</span> <span class="n">CFunctionType</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">_os</span><span class="o">.</span><span class="n">name</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"nt"</span><span class="p">,</span> <span class="s2">"ce"</span><span class="p">):</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">LoadLibrary</span> <span class="k">as</span> <span class="n">_dlopen</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">FUNCFLAG_STDCALL</span> <span class="k">as</span> <span class="n">_FUNCFLAG_STDCALL</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">LoadLibrary</span> <span class="k">as</span> <span class="n">_dlopen</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">FUNCFLAG_STDCALL</span> <span class="k">as</span> <span class="n">_FUNCFLAG_STDCALL</span>
|
||||
<span class="k">if</span> <span class="n">_os</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"ce"</span><span class="p">:</span>
|
||||
<span class="c1"># 'ce' doesn't have the stdcall calling convention</span>
|
||||
<span class="n">_FUNCFLAG_STDCALL</span> <span class="o">=</span> <span class="n">_FUNCFLAG_CDECL</span>
|
||||
@@ -174,16 +177,16 @@
|
||||
<span class="n">WINFUNCTYPE</span><span class="o">.</span><span class="vm">__doc__</span> <span class="o">=</span> <span class="n">CFUNCTYPE</span><span class="o">.</span><span class="vm">__doc__</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="s2">"CFUNCTYPE"</span><span class="p">,</span> <span class="s2">"WINFUNCTYPE"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">elif</span> <span class="n">_os</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"posix"</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">dlopen</span> <span class="k">as</span> <span class="n">_dlopen</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">dlopen</span> <span class="k">as</span> <span class="n">_dlopen</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">sizeof</span><span class="p">,</span> <span class="n">byref</span><span class="p">,</span> <span class="n">addressof</span><span class="p">,</span> <span class="n">alignment</span><span class="p">,</span> <span class="n">resize</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">get_errno</span><span class="p">,</span> <span class="n">set_errno</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">_SimpleCData</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">sizeof</span><span class="p">,</span> <span class="n">byref</span><span class="p">,</span> <span class="n">addressof</span><span class="p">,</span> <span class="n">alignment</span><span class="p">,</span> <span class="n">resize</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">get_errno</span><span class="p">,</span> <span class="n">set_errno</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">_SimpleCData</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_check_size</span><span class="p">(</span><span class="n">typ</span><span class="p">,</span> <span class="n">typecode</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="c1"># Check if sizeof(ctypes_type) against struct.calcsize. This</span>
|
||||
<span class="c1"># should protect somewhat against a misconfigured libffi.</span>
|
||||
<span class="kn">from</span> <span class="nn">struct</span> <span class="k">import</span> <span class="n">calcsize</span>
|
||||
<span class="kn">from</span> <span class="nn">struct</span> <span class="kn">import</span> <span class="n">calcsize</span>
|
||||
<span class="k">if</span> <span class="n">typecode</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># Most _type_ codes are the same as used in struct</span>
|
||||
<span class="n">typecode</span> <span class="o">=</span> <span class="n">typ</span><span class="o">.</span><span class="n">_type_</span>
|
||||
@@ -194,7 +197,7 @@
|
||||
|
||||
<span class="k">class</span> <span class="nc">py_object</span><span class="p">(</span><span class="n">_SimpleCData</span><span class="p">):</span>
|
||||
<span class="n">_type_</span> <span class="o">=</span> <span class="s2">"O"</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">def</span> <span class="fm">__repr__</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="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">py_object</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">except</span> <span class="ne">ValueError</span><span class="p">:</span>
|
||||
@@ -279,12 +282,12 @@
|
||||
<span class="k">class</span> <span class="nc">c_char_p</span><span class="p">(</span><span class="n">_SimpleCData</span><span class="p">):</span>
|
||||
<span class="n">_type_</span> <span class="o">=</span> <span class="s2">"z"</span>
|
||||
<span class="k">if</span> <span class="n">_os</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="s2">"nt"</span><span class="p">:</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">windll</span><span class="o">.</span><span class="n">kernel32</span><span class="o">.</span><span class="n">IsBadStringPtrA</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">%s</span><span class="s2">(</span><span class="si">%r</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">c_void_p</span><span class="p">)</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</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">def</span> <span class="fm">__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">%s</span><span class="s2">(</span><span class="si">%s</span><span class="s2">)"</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">cast</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">c_void_p</span><span class="p">)</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">_check_size</span><span class="p">(</span><span class="n">c_char_p</span><span class="p">,</span> <span class="s2">"P"</span><span class="p">)</span>
|
||||
|
||||
@@ -296,7 +299,7 @@
|
||||
<span class="k">class</span> <span class="nc">c_bool</span><span class="p">(</span><span class="n">_SimpleCData</span><span class="p">):</span>
|
||||
<span class="n">_type_</span> <span class="o">=</span> <span class="s2">"?"</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">POINTER</span><span class="p">,</span> <span class="n">pointer</span><span class="p">,</span> <span class="n">_pointer_type_cache</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">POINTER</span><span class="p">,</span> <span class="n">pointer</span><span class="p">,</span> <span class="n">_pointer_type_cache</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_reset_cache</span><span class="p">():</span>
|
||||
<span class="n">_pointer_type_cache</span><span class="o">.</span><span class="n">clear</span><span class="p">()</span>
|
||||
@@ -315,7 +318,7 @@
|
||||
<span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">c_int</span><span class="p">)(</span><span class="k">lambda</span><span class="p">:</span> <span class="kc">None</span><span class="p">)</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">set_conversion_mode</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">set_conversion_mode</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
@@ -382,7 +385,7 @@
|
||||
<span class="n">_func_flags_</span> <span class="o">=</span> <span class="n">_FUNCFLAG_CDECL</span>
|
||||
<span class="n">_func_restype_</span> <span class="o">=</span> <span class="n">c_int</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">name</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="n">DEFAULT_MODE</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="n">DEFAULT_MODE</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">use_errno</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
<span class="n">use_last_error</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
@@ -402,20 +405,20 @@
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_handle</span> <span class="o">=</span> <span class="n">handle</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">def</span> <span class="fm">__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">%s</span><span class="s2"> '</span><span class="si">%s</span><span class="s2">', handle </span><span class="si">%x</span><span class="s2"> at </span><span class="si">%x</span><span class="s2">>"</span> <span class="o">%</span> \
|
||||
<span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_name</span><span class="p">,</span>
|
||||
<span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_handle</span> <span class="o">&</span> <span class="p">(</span><span class="n">_sys</span><span class="o">.</span><span class="n">maxint</span><span class="o">*</span><span class="mi">2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)),</span>
|
||||
<span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">&</span> <span class="p">(</span><span class="n">_sys</span><span class="o">.</span><span class="n">maxint</span><span class="o">*</span><span class="mi">2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">))</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">name</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s1">'__'</span><span class="p">)</span> <span class="ow">and</span> <span class="n">name</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s1">'__'</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__getitem__</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">func</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">func</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name_or_ordinal</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name_or_ordinal</span><span class="p">):</span>
|
||||
<span class="n">func</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_FuncPtr</span><span class="p">((</span><span class="n">name_or_ordinal</span><span class="p">,</span> <span class="bp">self</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name_or_ordinal</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="n">func</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">=</span> <span class="n">name_or_ordinal</span>
|
||||
@@ -438,7 +441,7 @@
|
||||
|
||||
<span class="c1"># XXX Hm, what about HRESULT as normal parameter?</span>
|
||||
<span class="c1"># Mustn't it derive from c_long then?</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">_check_HRESULT</span><span class="p">,</span> <span class="n">_SimpleCData</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">_check_HRESULT</span><span class="p">,</span> <span class="n">_SimpleCData</span>
|
||||
<span class="k">class</span> <span class="nc">HRESULT</span><span class="p">(</span><span class="n">_SimpleCData</span><span class="p">):</span>
|
||||
<span class="n">_type_</span> <span class="o">=</span> <span class="s2">"l"</span>
|
||||
<span class="c1"># _check_retval_ is called with the function's result when it</span>
|
||||
@@ -462,17 +465,17 @@
|
||||
<span class="n">_func_restype_</span> <span class="o">=</span> <span class="n">HRESULT</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">LibraryLoader</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">dlltype</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dlltype</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_dlltype</span> <span class="o">=</span> <span class="n">dlltype</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getattr__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'_'</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">AttributeError</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="n">dll</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_dlltype</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="nb">setattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">dll</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">dll</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">LoadLibrary</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
@@ -497,7 +500,7 @@
|
||||
<span class="n">GetLastError</span> <span class="o">=</span> <span class="n">windll</span><span class="o">.</span><span class="n">kernel32</span><span class="o">.</span><span class="n">GetLastError</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">GetLastError</span> <span class="o">=</span> <span class="n">windll</span><span class="o">.</span><span class="n">coredll</span><span class="o">.</span><span class="n">GetLastError</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">get_last_error</span><span class="p">,</span> <span class="n">set_last_error</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">get_last_error</span><span class="p">,</span> <span class="n">set_last_error</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">WinError</span><span class="p">(</span><span class="n">code</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">descr</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">code</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
@@ -518,7 +521,7 @@
|
||||
|
||||
<span class="c1"># functions</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">_memmove_addr</span><span class="p">,</span> <span class="n">_memset_addr</span><span class="p">,</span> <span class="n">_string_at_addr</span><span class="p">,</span> <span class="n">_cast_addr</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">_memmove_addr</span><span class="p">,</span> <span class="n">_memset_addr</span><span class="p">,</span> <span class="n">_string_at_addr</span><span class="p">,</span> <span class="n">_cast_addr</span>
|
||||
|
||||
<span class="c1">## void *memmove(void *, const void *, size_t);</span>
|
||||
<span class="n">memmove</span> <span class="o">=</span> <span class="n">CFUNCTYPE</span><span class="p">(</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">c_void_p</span><span class="p">,</span> <span class="n">c_void_p</span><span class="p">,</span> <span class="n">c_size_t</span><span class="p">)(</span><span class="n">_memmove_addr</span><span class="p">)</span>
|
||||
@@ -545,7 +548,7 @@
|
||||
<span class="k">return</span> <span class="n">_string_at</span><span class="p">(</span><span class="n">ptr</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
|
||||
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">_wstring_at_addr</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">_wstring_at_addr</span>
|
||||
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
@@ -573,7 +576,7 @@
|
||||
<span class="k">return</span> <span class="mi">0</span> <span class="c1"># S_OK</span>
|
||||
<span class="k">return</span> <span class="n">ccom</span><span class="o">.</span><span class="n">DllCanUnloadNow</span><span class="p">()</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">ctypes._endian</span> <span class="k">import</span> <span class="n">BigEndianStructure</span><span class="p">,</span> <span class="n">LittleEndianStructure</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes._endian</span> <span class="kn">import</span> <span class="n">BigEndianStructure</span><span class="p">,</span> <span class="n">LittleEndianStructure</span>
|
||||
|
||||
<span class="c1"># Fill in specifically-sized types</span>
|
||||
<span class="n">c_int8</span> <span class="o">=</span> <span class="n">c_byte</span>
|
||||
@@ -621,13 +624,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+13
-6
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Overview: module code — PythonForWindows 0.5 documentation</title>
|
||||
<title>Overview: module code — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../genindex.html" />
|
||||
<link rel="search" title="Search" href="../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -47,6 +50,8 @@
|
||||
<li><a href="windows/debug/breakpoints.html">windows.debug.breakpoints</a></li>
|
||||
<li><a href="windows/debug/debugger.html">windows.debug.debugger</a></li>
|
||||
<li><a href="windows/debug/localdbg.html">windows.debug.localdbg</a></li>
|
||||
<li><a href="windows/debug/symboldbg.html">windows.debug.symboldbg</a></li>
|
||||
<li><a href="windows/debug/symbols.html">windows.debug.symbols</a></li>
|
||||
<li><a href="windows/generated_def/flag.html">windows.generated_def.flag</a></li>
|
||||
<li><a href="windows/generated_def/winstructs.html">windows.generated_def.winstructs</a></li>
|
||||
<li><a href="windows/hooks.html">windows.hooks</a></li>
|
||||
@@ -64,7 +69,9 @@
|
||||
<li><a href="windows/utils/pythonutils.html">windows.utils.pythonutils</a></li>
|
||||
<li><a href="windows/utils/winutils.html">windows.utils.winutils</a></li>
|
||||
<li><a href="windows/winobject/apisetmap.html">windows.winobject.apisetmap</a></li>
|
||||
<li><a href="windows/winobject/device_manager.html">windows.winobject.device_manager</a></li>
|
||||
<li><a href="windows/winobject/event_log.html">windows.winobject.event_log</a></li>
|
||||
<li><a href="windows/winobject/event_trace.html">windows.winobject.event_trace</a></li>
|
||||
<li><a href="windows/winobject/exception.html">windows.winobject.exception</a></li>
|
||||
<li><a href="windows/winobject/handle.html">windows.winobject.handle</a></li>
|
||||
<li><a href="windows/winobject/network.html">windows.winobject.network</a></li>
|
||||
@@ -113,12 +120,12 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+18
-15
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.alpc — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.alpc — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -39,11 +42,11 @@
|
||||
<h1>Source code for windows.alpc</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">sys</span>
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">generated_def</span> <span class="k">as</span> <span class="n">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">generated_def</span> <span class="k">as</span> <span class="n">gdef</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.pycompat</span>
|
||||
|
||||
|
||||
@@ -59,7 +62,7 @@
|
||||
<div class="viewcode-block" id="AlpcMessage"><a class="viewcode-back" href="../../alpc.html#windows.alpc.AlpcMessage">[docs]</a><span class="k">class</span> <span class="nc">AlpcMessage</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a full ALPC Message: a :class:`AlpcMessagePort` and a :class:`MessageAttribute`"""</span>
|
||||
<span class="c1"># PORT_MESSAGE + MessageAttribute</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">msg_or_size</span><span class="o">=</span><span class="mh">0x1000</span><span class="p">,</span> <span class="n">attributes</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">msg_or_size</span><span class="o">=</span><span class="mh">0x1000</span><span class="p">,</span> <span class="n">attributes</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="c1"># Init the PORT_MESSAGE</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">msg_or_size</span><span class="p">,</span> <span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">int_types</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">port_message_buffer_size</span> <span class="o">=</span> <span class="n">msg_or_size</span>
|
||||
@@ -390,10 +393,10 @@
|
||||
<span class="s2">"An ALPC client able to connect to a port and send/receive messages"</span>
|
||||
<span class="n">DEFAULT_MAX_MESSAGE_LENGTH</span> <span class="o">=</span> <span class="mh">0x9000</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">port_name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">port_name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Init the :class:`AlpcClient` automatically connect to ``port_name`` using default values if given"""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">port_name</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">port_name</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1">#: The name of the ALPC port the client is connect to.</span>
|
||||
<span class="k">if</span> <span class="n">port_name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">connect_to_port</span><span class="p">(</span><span class="n">port_name</span><span class="p">,</span> <span class="s2">""</span><span class="p">)</span>
|
||||
|
||||
@@ -477,7 +480,7 @@
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_close_port</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span></div>
|
||||
|
||||
@@ -486,7 +489,7 @@
|
||||
<span class="sd">"""An ALPC server able to create a port, accept connections and send/receive messages"""</span>
|
||||
<span class="n">DEFAULT_MAX_MESSAGE_LENGTH</span> <span class="o">=</span> <span class="mh">0x1000</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">port_name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">port_name</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">port_name</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">communication_port_list</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
@@ -576,7 +579,7 @@
|
||||
|
||||
<span class="c1"># TODO: add an API to close a communication port ?</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">disconnect</span><span class="p">()</span></div>
|
||||
</pre></div>
|
||||
@@ -611,13 +614,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+19
-16
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.com — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.com — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -41,18 +44,18 @@
|
||||
<span class="kn">import</span> <span class="nn">struct</span>
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">functools</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="k">import</span> <span class="n">HRESULT</span><span class="p">,</span> <span class="n">byref</span><span class="p">,</span> <span class="n">cast</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="kn">import</span> <span class="n">HRESULT</span><span class="p">,</span> <span class="n">byref</span><span class="p">,</span> <span class="n">cast</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</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</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="k">import</span> <span class="n">RPC_C_IMP_LEVEL_IMPERSONATE</span><span class="p">,</span> <span class="n">CLSCTX_INPROC_SERVER</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="k">import</span> <span class="n">interfaces</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.interfaces</span> <span class="k">import</span> <span class="n">generate_IID</span><span class="p">,</span> <span class="n">IID</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="kn">import</span> <span class="n">RPC_C_IMP_LEVEL_IMPERSONATE</span><span class="p">,</span> <span class="n">CLSCTX_INPROC_SERVER</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="kn">import</span> <span class="n">interfaces</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.interfaces</span> <span class="kn">import</span> <span class="n">generate_IID</span><span class="p">,</span> <span class="n">IID</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="k">import</span> <span class="n">int_types</span><span class="p">,</span> <span class="n">basestring</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">int_types</span><span class="p">,</span> <span class="n">basestring</span>
|
||||
|
||||
<span class="c1"># We have windows.com.COMImplementation</span>
|
||||
<span class="c1"># So we need windows.com.COMInterface</span>
|
||||
@@ -204,7 +207,7 @@
|
||||
|
||||
<span class="n">empty</span> <span class="o">=</span> <span class="nb">object</span><span class="p">()</span>
|
||||
<span class="k">class</span> <span class="nc">Variant</span><span class="p">(</span><span class="n">VARIANT</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">value</span><span class="o">=</span><span class="n">empty</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="n">empty</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">type</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">set_value_and_type</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
@@ -309,7 +312,7 @@
|
||||
<span class="n">asbyte</span> <span class="o">=</span> <span class="n">generate_getter</span><span class="p">(</span><span class="n">VT_UI1</span><span class="p">)</span>
|
||||
<span class="n">asunknown</span> <span class="o">=</span> <span class="n">generate_getter</span><span class="p">(</span><span class="n">VT_UNKNOWN</span><span class="p">)</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">def</span> <span class="fm">__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"> of type </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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">vt</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Deprecated: remove me when test pass :)</span>
|
||||
@@ -370,7 +373,7 @@
|
||||
<span class="n">_fields_</span> <span class="o">=</span> <span class="p">[(</span><span class="n">name</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span> <span class="k">for</span> <span class="n">name</span> <span class="ow">in</span> <span class="n">names</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">Vtable</span><span class="p">(</span><span class="o">*</span><span class="p">[</span><span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">implems</span><span class="p">]),</span> <span class="n">implems</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="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">verify_implem</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">IMPLEMENT</span><span class="p">)</span>
|
||||
<span class="n">vtable</span><span class="p">,</span> <span class="n">implems</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_create_vtable</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">IMPLEMENT</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">vtable</span> <span class="o">=</span> <span class="n">vtable</span>
|
||||
@@ -424,13 +427,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+19
-16
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.crypto.certificate — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.crypto.certificate — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -41,10 +44,10 @@
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.crypto</span> <span class="k">import</span> <span class="n">DEFAULT_ENCODING</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.crypto</span> <span class="kn">import</span> <span class="n">DEFAULT_ENCODING</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows.crypto.cryptmsg</span>
|
||||
|
||||
@@ -82,7 +85,7 @@
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">CMSG_SIGNER_COUNT_PARAM</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">CMSG_CERT_COUNT_PARAM</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</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">filename</span><span class="p">,</span> <span class="n">content_type</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">CERT_QUERY_CONTENT_FLAG_ALL</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">content_type</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">CERT_QUERY_CONTENT_FLAG_ALL</span><span class="p">):</span>
|
||||
<span class="c1"># No other API than filename for now..</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">filename</span> <span class="o">=</span> <span class="n">filename</span>
|
||||
|
||||
@@ -136,7 +139,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_signers_and_certs_generator</span><span class="p">())</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> "</span><span class="si">{1}</span><span class="s1">" content_type=</span><span class="si">{2!r}</span><span class="s1">>'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">filename</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">content_type</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -215,7 +218,7 @@
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="n">Certificate</span><span class="o">.</span><span class="n">from_pointer</span><span class="p">(</span><span class="n">rawcertcontext</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CertCloseStore</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -516,12 +519,12 @@
|
||||
<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="n">ptr</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">Certificate</span><span class="p">))[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__eq__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">Certificate</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">NotImplemented</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">CertCompareCertificate</span><span class="p">(</span><span class="n">DEFAULT_ENCODING</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">pCertInfo</span><span class="p">,</span> <span class="n">other</span><span class="o">.</span><span class="n">pCertInfo</span><span class="p">)</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> "</span><span class="si">{1}</span><span class="s1">" serial="</span><span class="si">{2}</span><span class="s1">">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">serial</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -596,7 +599,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">_type_</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">HCRYPTPROV</span><span class="o">.</span><span class="n">_type_</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">pszContainer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">pszProvider</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwProvType</span><span class="o">=</span><span class="mi">0</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">retrycreate</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pszContainer</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">pszProvider</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">dwProvType</span><span class="o">=</span><span class="mi">0</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">retrycreate</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">pszContainer</span> <span class="o">=</span> <span class="n">pszContainer</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">pszProvider</span> <span class="o">=</span> <span class="n">pszProvider</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dwProvType</span> <span class="o">=</span> <span class="n">dwProvType</span>
|
||||
@@ -605,11 +608,11 @@
|
||||
<span class="c1">#self.value = HCRYPTPROV()</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">acquire</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__exit__</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="k">def</span> <span class="fm">__exit__</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="bp">self</span><span class="o">.</span><span class="n">release</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">acquire</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
@@ -654,13 +657,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+16
-12
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.crypto.cryptmsg — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.crypto.cryptmsg — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -39,7 +42,7 @@
|
||||
<h1>Source code for windows.crypto.cryptmsg</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.crypto</span>
|
||||
|
||||
@@ -154,20 +157,21 @@
|
||||
|
||||
<span class="k">def</span> <span class="nf">update</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">blob</span><span class="p">,</span> <span class="n">final</span><span class="p">):</span>
|
||||
<span class="c1"># Test isinstance string ?</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">blob</span><span class="p">,</span> <span class="p">(</span><span class="n">basestring</span><span class="p">,</span> <span class="nb">bytearray</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">blob</span><span class="p">,</span> <span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">anybuff</span><span class="p">,</span> <span class="nb">bytearray</span><span class="p">)):</span>
|
||||
<span class="n">blob</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">raw_encode</span><span class="p">(</span><span class="n">blob</span><span class="p">)</span>
|
||||
<span class="n">buffer</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">BYTE</span><span class="p">)</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">blob</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CryptMsgUpdate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">blob</span><span class="p">),</span> <span class="n">final</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CryptMsgUpdate</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">blob</span><span class="o">.</span><span class="n">pbData</span><span class="p">,</span> <span class="n">blob</span><span class="o">.</span><span class="n">cbData</span><span class="p">,</span> <span class="n">final</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># constructor</span>
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">from_data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="CryptMessage.from_buffer"><a class="viewcode-back" href="../../../crypto.html#windows.crypto.CryptMessage.from_buffer">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">from_buffer</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="n">hmsg</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CryptMsgOpenToDecode</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">crypto</span><span class="o">.</span><span class="n">DEFAULT_ENCODING</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="n">newmsg</span> <span class="o">=</span> <span class="n">CryptMessage</span><span class="p">(</span><span class="n">hmsg</span><span class="p">)</span>
|
||||
<span class="n">newmsg</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">final</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">newmsg</span>
|
||||
<span class="k">return</span> <span class="n">newmsg</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CryptMsgClose</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
|
||||
</pre></div>
|
||||
|
||||
@@ -201,13 +205,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+14
-11
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.crypto.encrypt_decrypt — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.crypto.encrypt_decrypt — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -37,11 +40,11 @@
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for windows.crypto.encrypt_decrypt</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">os</span> <span class="k">import</span> <span class="n">urandom</span>
|
||||
<span></span><span class="kn">from</span> <span class="nn">os</span> <span class="kn">import</span> <span class="n">urandom</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.crypto</span> <span class="k">import</span> <span class="n">DEFAULT_ENCODING</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.crypto</span> <span class="kn">import</span> <span class="n">DEFAULT_ENCODING</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"encrypt"</span><span class="p">,</span> <span class="s2">"decrypt"</span><span class="p">]</span>
|
||||
|
||||
@@ -56,7 +59,7 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">GenerateInitVector</span><span class="p">(</span><span class="nb">object</span><span class="p">):</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"GenerateInitVector()"</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">generate_init_vector</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">algo</span><span class="p">):</span>
|
||||
@@ -188,13 +191,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+12
-9
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.crypto.generation — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.crypto.generation — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -38,9 +41,9 @@
|
||||
|
||||
<h1>Source code for windows.crypto.generation</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.crypto</span> <span class="k">import</span> <span class="n">DEFAULT_ENCODING</span><span class="p">,</span> <span class="n">CertificateStore</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.crypto</span> <span class="kn">import</span> <span class="n">DEFAULT_ENCODING</span><span class="p">,</span> <span class="n">CertificateStore</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="generate_selfsigned_certificate"><a class="viewcode-back" href="../../../crypto.html#windows.crypto.generation.generate_selfsigned_certificate">[docs]</a><span class="k">def</span> <span class="nf">generate_selfsigned_certificate</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"CN=DEFAULT"</span><span class="p">,</span> <span class="n">prov</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">key_info</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">signature_algo</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
@@ -122,13 +125,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+30
-21
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.debug.breakpoints — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.debug.breakpoints — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -37,12 +40,13 @@
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for windows.debug.breakpoints</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">OrderedDict</span>
|
||||
<span></span><span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">OrderedDict</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</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</span> <span class="k">import</span> <span class="n">windef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject.process</span> <span class="k">import</span> <span class="n">WinProcess</span><span class="p">,</span> <span class="n">WinThread</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="kn">import</span> <span class="n">windef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject.process</span> <span class="kn">import</span> <span class="n">WinProcess</span><span class="p">,</span> <span class="n">WinThread</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span>
|
||||
|
||||
|
||||
<span class="n">STANDARD_BP</span> <span class="o">=</span> <span class="s2">"BP"</span>
|
||||
@@ -52,7 +56,7 @@
|
||||
<div class="viewcode-block" id="Breakpoint"><a class="viewcode-back" href="../../../debug.html#windows.debug.Breakpoint">[docs]</a><span class="k">class</span> <span class="nc">Breakpoint</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""An standard (Int3) breakpoint (type == ``STANDARD_BP``)"""</span>
|
||||
<span class="nb">type</span> <span class="o">=</span> <span class="n">STANDARD_BP</span> <span class="c1"># REAL BP</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">addr</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">addr</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">apply_to_target</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
@@ -64,7 +68,7 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">ProxyBreakpoint</span><span class="p">(</span><span class="n">Breakpoint</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">target</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">addr</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">type</span>
|
||||
@@ -85,7 +89,7 @@
|
||||
<span class="nb">type</span> <span class="o">=</span> <span class="n">MEMORY_BREAKPOINT</span>
|
||||
<span class="n">DEFAULT_EVENTS</span> <span class="o">=</span> <span class="s2">"RWX"</span>
|
||||
<span class="n">DEFAULT_SIZE</span> <span class="o">=</span> <span class="mh">0x1000</span>
|
||||
<div class="viewcode-block" id="MemoryBreakpoint.__init__"><a class="viewcode-back" href="../../../debug.html#windows.debug.MemoryBreakpoint.__init__">[docs]</a> <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">addr</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">events</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="MemoryBreakpoint.__init__"><a class="viewcode-back" href="../../../debug.html#windows.debug.MemoryBreakpoint.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">events</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""``size``: the size of the memory breakpoint.</span>
|
||||
|
||||
<span class="sd"> ``events``: a string representing the events that interest the BP (any of "RWX")"""</span>
|
||||
@@ -124,7 +128,7 @@
|
||||
<span class="c1">## Behaviour breakpoint !</span>
|
||||
<span class="c1"># class FunctionParamDumpBP(Breakpoint):</span>
|
||||
<span class="k">class</span> <span class="nc">FunctionParamDumpBPAbstract</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">addr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">target</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">target</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TARGET</span>
|
||||
@@ -205,13 +209,13 @@
|
||||
|
||||
<span class="k">class</span> <span class="nc">FunctionParameterProxy</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="c1"># TODO: clean this + put more of the logic in the X64ArgumentRetriever</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">extractor</span><span class="p">,</span> <span class="n">name_map</span><span class="p">,</span> <span class="n">parameters_type</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">extractor</span><span class="p">,</span> <span class="n">name_map</span><span class="p">,</span> <span class="n">parameters_type</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">extractor</span> <span class="o">=</span> <span class="n">extractor</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name_map</span> <span class="o">=</span> <span class="n">name_map</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">parameters_type</span> <span class="o">=</span> <span class="n">parameters_type</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">x</span> <span class="o">=</span> <span class="n">x</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name_map</span><span class="p">[</span><span class="n">x</span><span class="p">]</span>
|
||||
<span class="c1"># import pdb;pdb.set_trace()</span>
|
||||
@@ -229,7 +233,7 @@
|
||||
<span class="k">pass</span>
|
||||
<span class="k">return</span> <span class="n">t</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name_map</span><span class="p">[</span><span class="n">x</span><span class="p">]</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
@@ -248,7 +252,7 @@
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">FunctionRetBP</span><span class="p">(</span><span class="n">Breakpoint</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">addr</span><span class="p">,</span> <span class="n">initial_breakpoint</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">initial_breakpoint</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">FunctionRetBP</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="n">addr</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">initial_breakpoint</span> <span class="o">=</span> <span class="n">initial_breakpoint</span>
|
||||
|
||||
@@ -261,10 +265,15 @@
|
||||
<span class="sd">"""A Breakpoint that allow to trigger at the return of a function"""</span>
|
||||
<div class="viewcode-block" id="FunctionCallBP.break_on_ret"><a class="viewcode-back" href="../../../debug.html#windows.debug.FunctionCallBP.break_on_ret">[docs]</a> <span class="k">def</span> <span class="nf">break_on_ret</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dbg</span><span class="p">,</span> <span class="n">exception</span><span class="p">):</span>
|
||||
<span class="sd">"""Setup a breakpoint at the return address of the function, this breakpoint will call :func:`ret_trigger`"""</span>
|
||||
<span class="n">cproc</span> <span class="o">=</span> <span class="n">dbg</span><span class="o">.</span><span class="n">current_process</span>
|
||||
<span class="n">return_addr</span> <span class="o">=</span> <span class="n">dbg</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">read_ptr</span><span class="p">(</span><span class="n">dbg</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">sp</span><span class="p">)</span>
|
||||
<span class="n">return_addr</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_ret_addr</span><span class="p">(</span><span class="n">dbg</span><span class="p">,</span> <span class="n">exception</span><span class="p">)</span>
|
||||
<span class="n">dbg</span><span class="o">.</span><span class="n">add_bp</span><span class="p">(</span><span class="n">FunctionRetBP</span><span class="p">(</span><span class="n">return_addr</span><span class="p">,</span> <span class="bp">self</span><span class="p">),</span> <span class="n">target</span><span class="o">=</span><span class="n">dbg</span><span class="o">.</span><span class="n">current_process</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="FunctionCallBP.get_ret_addr"><a class="viewcode-back" href="../../../debug.html#windows.debug.FunctionCallBP.get_ret_addr">[docs]</a> <span class="k">def</span> <span class="nf">get_ret_addr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dbg</span><span class="p">,</span> <span class="n">exception</span><span class="p">):</span>
|
||||
<span class="sd">"""Get the return address of the current target, only valid in the trigger() function."""</span>
|
||||
<span class="n">cproc</span> <span class="o">=</span> <span class="n">dbg</span><span class="o">.</span><span class="n">current_process</span>
|
||||
<span class="k">return</span> <span class="n">dbg</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">read_ptr</span><span class="p">(</span><span class="n">dbg</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context</span><span class="o">.</span><span class="n">sp</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="FunctionCallBP.ret_trigger"><a class="viewcode-back" href="../../../debug.html#windows.debug.FunctionCallBP.ret_trigger">[docs]</a> <span class="k">def</span> <span class="nf">ret_trigger</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dbg</span><span class="p">,</span> <span class="n">exception</span><span class="p">):</span>
|
||||
<span class="sd">"""Called at the return of the function if :func:`break_on_ret` was called"""</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"ret_trigger"</span><span class="p">)</span></div></div>
|
||||
@@ -278,7 +287,7 @@
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
<span class="k">class</span> <span class="nc">PrintBP</span><span class="p">(</span><span class="n">Breakpoint</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">addr</span><span class="p">,</span> <span class="nb">format</span><span class="p">,</span> <span class="n">func</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="nb">format</span><span class="p">,</span> <span class="n">func</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">PrintBP</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="n">addr</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">format</span> <span class="o">=</span> <span class="nb">format</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">func</span> <span class="o">=</span> <span class="n">func</span>
|
||||
@@ -321,13 +330,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+24
-17
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.debug.debugger — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.debug.debugger — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -38,8 +41,8 @@
|
||||
|
||||
<h1>Source code for windows.debug.debugger</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">os.path</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">defaultdict</span><span class="p">,</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="k">import</span> <span class="n">contextmanager</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span><span class="p">,</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">contextmanager</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
@@ -48,17 +51,17 @@
|
||||
<span class="kn">import</span> <span class="nn">windows.native_exec.simple_x86</span> <span class="k">as</span> <span class="nn">x86</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.native_exec.simple_x64</span> <span class="k">as</span> <span class="nn">x64</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject.process</span> <span class="k">import</span> <span class="n">WinProcess</span><span class="p">,</span> <span class="n">WinThread</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="k">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</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</span> <span class="k">import</span> <span class="n">windef</span>
|
||||
<span class="kn">from</span> <span class="nn">.breakpoints</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject.process</span> <span class="kn">import</span> <span class="n">WinProcess</span><span class="p">,</span> <span class="n">WinThread</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="kn">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="kn">import</span> <span class="n">windef</span>
|
||||
<span class="kn">from</span> <span class="nn">.breakpoints</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="c1">#from windows.syswow64 import CS_32bits</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject.exception</span> <span class="k">import</span> <span class="n">VectoredException</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject.exception</span> <span class="kn">import</span> <span class="n">VectoredException</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="k">import</span> <span class="n">basestring</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span>
|
||||
|
||||
|
||||
<span class="n">PAGE_SIZE</span> <span class="o">=</span> <span class="mh">0x1000</span>
|
||||
@@ -87,7 +90,7 @@
|
||||
<span class="sd"> * Memory BP (virtual_protect)</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<div class="viewcode-block" id="Debugger.__init__"><a class="viewcode-back" href="../../../debug.html#windows.debug.Debugger.__init__">[docs]</a> <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">target</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Debugger.__init__"><a class="viewcode-back" href="../../../debug.html#windows.debug.Debugger.__init__">[docs]</a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="sd">"""``target`` must be a debuggable :class:`WinProcess`."""</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_init_dispatch_handlers</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span>
|
||||
@@ -810,6 +813,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">breakpoints</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">pid</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_memory_save</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">pid</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_module_by_process</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">pid</span><span class="p">]</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_internal_on_create_process</span><span class="p">(</span><span class="n">create_process</span><span class="p">)</span> <span class="c1"># Allow hook for symbol-debugger</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_update_debugger_state</span><span class="p">(</span><span class="n">debug_event</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_add_exe_to_module_list</span><span class="p">(</span><span class="n">create_process</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_setup_pending_breakpoints_new_process</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">current_process</span><span class="p">)</span>
|
||||
@@ -875,6 +879,9 @@
|
||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_breakpoint_to_reput</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">retvalue</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_internal_on_create_process</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">create_process</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_internal_on_load_dll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">load_dll</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
@@ -1205,13 +1212,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+28
-23
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.debug.localdbg — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.debug.localdbg — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -37,20 +40,20 @@
|
||||
<div class="body" role="main">
|
||||
|
||||
<h1>Source code for windows.debug.localdbg</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">defaultdict</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="k">import</span> <span class="n">contextmanager</span>
|
||||
<span></span><span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">defaultdict</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">contextmanager</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.winobject.exception</span> <span class="k">as</span> <span class="nn">winexception</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="k">import</span> <span class="n">windef</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">.breakpoints</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="kn">import</span> <span class="n">windef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.breakpoints</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">FakeDebuggerCurrentThread</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""A pseudo thread representing the current thread at exception time"""</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">dbg</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dbg</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">dbg</span> <span class="o">=</span> <span class="n">dbg</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
@@ -75,7 +78,7 @@
|
||||
<span class="sd"> * Hardware-Exec BP (DrX)</span>
|
||||
<span class="sd"> """</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="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">breakpoints</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_memory_save</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_reput_breakpoint</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
@@ -85,7 +88,7 @@
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">AddVectoredExceptionHandler</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">callback_vectored</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">setup_hxbp_callback_vectored</span> <span class="o">=</span> <span class="n">winexception</span><span class="o">.</span><span class="n">VectoredException</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">setup_hxbp_callback</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">hxbp_info</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">code</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">native_exec</span><span class="o">.</span><span class="n">create_function</span><span class="p">(</span><span class="s2">"</span><span class="se">\xcc\xc3</span><span class="s2">"</span><span class="p">,</span> <span class="p">[</span><span class="n">PVOID</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">code</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">native_exec</span><span class="o">.</span><span class="n">create_function</span><span class="p">(</span><span class="sa">b</span><span class="s2">"</span><span class="se">\xcc\xc3</span><span class="s2">"</span><span class="p">,</span> <span class="p">[</span><span class="n">PVOID</span><span class="p">])</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">veh_depth</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_exception</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exceptions_stack</span> <span class="o">=</span> <span class="p">[</span><span class="kc">None</span><span class="p">]</span>
|
||||
@@ -167,7 +170,7 @@
|
||||
<span class="n">bp</span><span class="p">,</span> <span class="n">single_step</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_reput_breakpoint</span><span class="p">[</span><span class="n">windows</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_memory_save</span><span class="p">[</span><span class="n">bp</span><span class="o">.</span><span class="n">_addr</span><span class="p">]</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">read_memory</span><span class="p">(</span><span class="n">bp</span><span class="o">.</span><span class="n">_addr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">with</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">VirtualProtected</span><span class="p">(</span><span class="n">bp</span><span class="o">.</span><span class="n">_addr</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">PAGE_EXECUTE_READWRITE</span><span class="p">):</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">bp</span><span class="o">.</span><span class="n">_addr</span><span class="p">,</span> <span class="s2">"</span><span class="se">\xcc</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">bp</span><span class="o">.</span><span class="n">_addr</span><span class="p">,</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\xcc</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">del</span> <span class="bp">self</span><span class="o">.</span><span class="n">_reput_breakpoint</span><span class="p">[</span><span class="n">windows</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">tid</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">single_step</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">on_exception</span><span class="p">(</span><span class="n">exc</span><span class="p">)</span>
|
||||
@@ -223,7 +226,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">breakpoints</span><span class="p">[</span><span class="n">addr</span><span class="p">]</span> <span class="o">=</span> <span class="n">bp</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_memory_save</span><span class="p">[</span><span class="n">addr</span><span class="p">]</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">read_memory</span><span class="p">(</span><span class="n">addr</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="k">with</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">VirtualProtected</span><span class="p">(</span><span class="n">addr</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">PAGE_EXECUTE_READWRITE</span><span class="p">):</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">addr</span><span class="p">,</span> <span class="s2">"</span><span class="se">\xcc</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">addr</span><span class="p">,</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\xcc</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">return</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">add_bp_hxbp</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bp</span><span class="p">,</span> <span class="n">targets</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
@@ -243,16 +246,18 @@
|
||||
<span class="k">def</span> <span class="nf">setup_hxbp_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc</span><span class="p">):</span>
|
||||
<span class="k">with</span> <span class="bp">self</span><span class="o">.</span><span class="n">NewCurrentException</span><span class="p">(</span><span class="n">exc</span><span class="p">):</span>
|
||||
<span class="n">exp_code</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_exception_code</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">exp_code</span> <span class="o">!=</span> <span class="n">windef</span><span class="o">.</span><span class="n">EXCEPTION_BREAKPOINT</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">windef</span><span class="o">.</span><span class="n">EXCEPTION_CONTINUE_SEARCH</span>
|
||||
<span class="n">context</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_exception_context</span><span class="p">()</span>
|
||||
<span class="n">exp_addr</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">pc</span>
|
||||
<span class="n">hxbp_used</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">setup_hxbp_in_context</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">exp_addr</span><span class="p">,</span> <span class="s2">"</span><span class="se">\x90</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">exp_addr</span><span class="p">,</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x90</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="c1"># Raising in the VEH is a bad idea..</span>
|
||||
<span class="c1"># So better give the information to triggerer..</span>
|
||||
<span class="k">if</span> <span class="n">hxbp_used</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_exception_context</span><span class="p">()</span><span class="o">.</span><span class="n">Eax</span> <span class="o">=</span> <span class="n">exp_addr</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_exception_context</span><span class="p">()</span><span class="o">.</span><span class="n">func_result</span> <span class="o">=</span> <span class="n">exp_addr</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_exception_context</span><span class="p">()</span><span class="o">.</span><span class="n">Eax</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_exception_context</span><span class="p">()</span><span class="o">.</span><span class="n">func_result</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">return</span> <span class="n">windef</span><span class="o">.</span><span class="n">EXCEPTION_CONTINUE_EXECUTION</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">remove_hxbp_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc</span><span class="p">):</span>
|
||||
@@ -261,7 +266,7 @@
|
||||
<span class="n">context</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_exception_context</span><span class="p">()</span>
|
||||
<span class="n">exp_addr</span> <span class="o">=</span> <span class="n">context</span><span class="o">.</span><span class="n">pc</span>
|
||||
<span class="n">hxbp_used</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">remove_hxbp_in_context</span><span class="p">(</span><span class="n">context</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">exp_addr</span><span class="p">,</span> <span class="s2">"</span><span class="se">\x90</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">exp_addr</span><span class="p">,</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\x90</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="c1"># Raising in the VEH is a bad idea..</span>
|
||||
<span class="c1"># So better give the information to triggerer..</span>
|
||||
<span class="k">if</span> <span class="n">hxbp_used</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
@@ -306,7 +311,7 @@
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">code</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Could not setup HXBP"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="s2">"</span><span class="se">\xcc</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\xcc</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">setup_hxbp_other_thread</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">thread</span><span class="p">):</span>
|
||||
@@ -329,7 +334,7 @@
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">code</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Could not remove HXBP"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="s2">"</span><span class="se">\xcc</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="sa">b</span><span class="s2">"</span><span class="se">\xcc</span><span class="s2">"</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">remove_hxbp_other_thread</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">thread</span><span class="p">):</span>
|
||||
@@ -372,13 +377,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,132 @@
|
||||
|
||||
<!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.debug.symboldbg — PythonForWindows 0.6 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" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.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.6 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.debug.symboldbg</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">int_types</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">Debugger</span>
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">symbols</span>
|
||||
|
||||
<div class="viewcode-block" id="SymbolDebugger"><a class="viewcode-back" href="../../../debug.html#windows.debug.SymbolDebugger">[docs]</a><span class="k">class</span> <span class="nc">SymbolDebugger</span><span class="p">(</span><span class="n">Debugger</span><span class="p">):</span>
|
||||
<span class="sd">"""A debugger using the symbol API (hence PDB) for name resolution.</span>
|
||||
<span class="sd"> To use PDB, a correct version of dbghelp should be configured as well as ``_NT_SYMBOL_PATH``.</span>
|
||||
<span class="sd"> (See :ref:`debug_symbols_module`)</span>
|
||||
|
||||
<span class="sd"> This debugger add a ``current_resolver`` variable (A :class:`~windows.debug.symbols.ProcessSymbolHandler`) for the ``current_process``.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</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="nb">super</span><span class="p">(</span><span class="n">SymbolDebugger</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="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="bp">self</span><span class="o">.</span><span class="n">_resolvers</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_internal_on_load_dll</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">load_dll</span><span class="p">):</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_loaded_dll</span><span class="p">(</span><span class="n">load_dll</span><span class="p">)</span>
|
||||
<span class="c1"># Path is used instead of name for naming the module (and can be set to whatever if using file handle)</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_resolver</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">load_dll</span><span class="o">.</span><span class="n">hFile</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">addr</span><span class="o">=</span><span class="n">load_dll</span><span class="o">.</span><span class="n">lpBaseOfDll</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_internal_on_create_process</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">create_process</span><span class="p">):</span>
|
||||
<span class="c1"># Create and setup a symbol resolver for the new process</span>
|
||||
<span class="n">resolver</span> <span class="o">=</span> <span class="n">symbols</span><span class="o">.</span><span class="n">ProcessSymbolHandler</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">current_process</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_resolvers</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">pid</span><span class="p">]</span> <span class="o">=</span> <span class="n">resolver</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_resolver</span> <span class="o">=</span> <span class="n">resolver</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_update_debugger_state</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">debug_event</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">SymbolDebugger</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">_update_debugger_state</span><span class="p">(</span><span class="n">debug_event</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">current_resolver</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_resolvers</span><span class="p">[</span><span class="n">debug_event</span><span class="o">.</span><span class="n">dwProcessId</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_resolve</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">addr</span><span class="p">,</span> <span class="n">int_types</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">addr</span>
|
||||
<span class="k">if</span> <span class="s2">"+"</span> <span class="ow">in</span> <span class="n">addr</span><span class="p">:</span>
|
||||
<span class="n">symbol</span><span class="p">,</span> <span class="n">deplacement</span> <span class="o">=</span> <span class="n">addr</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">"+"</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">deplacement</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">deplacement</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">symbol</span> <span class="o">=</span> <span class="n">addr</span>
|
||||
<span class="n">deplacement</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">current_resolver</span><span class="p">[</span><span class="n">symbol</span><span class="p">]</span><span class="o">.</span><span class="n">addr</span> <span class="o">+</span> <span class="n">deplacement</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="ow">in</span> <span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_NOT_FOUND</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_MOD_NOT_FOUND</span><span class="p">):</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">return</span> <span class="kc">None</span></div>
|
||||
</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.6 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-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+816
@@ -0,0 +1,816 @@
|
||||
|
||||
<!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.debug.symbols — PythonForWindows 0.6 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" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.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.6 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.debug.symbols</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">os.path</span>
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">copy</span>
|
||||
<span class="kn">import</span> <span class="nn">itertools</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span>
|
||||
|
||||
<span class="n">DEFAULT_DBG_OPTION</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SYMOPT_DEFERRED_LOADS</span> <span class="o">+</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SYMOPT_UNDNAME</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="set_dbghelp_path"><a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.set_dbghelp_path">[docs]</a><span class="k">def</span> <span class="nf">set_dbghelp_path</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
|
||||
<span class="sd">"""Set the path of the ``dbghelp.dll`` file to use. It allow to configure a different version of the DLL handling PDB downloading.</span>
|
||||
|
||||
<span class="sd"> If ``path`` is a directory, the final ``dbghelp.dll`` will be computed as</span>
|
||||
<span class="sd"> ``path\<current_process_bitness>\dbghelp.dll``.</span>
|
||||
|
||||
<span class="sd"> This allow to use the same script transparently in both 32b & 64b python interpreters.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">loaded_modules</span> <span class="o">=</span> <span class="p">[</span><span class="n">m</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="k">for</span> <span class="n">m</span> <span class="ow">in</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">peb</span><span class="o">.</span><span class="n">modules</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isdir</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span><span class="p">),</span> <span class="s2">"dbghelp.dll"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="s2">"dbghelp.dll"</span> <span class="ow">in</span> <span class="n">loaded_modules</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"setup_dbghelp_path should be called before any dbghelp function"</span><span class="p">)</span>
|
||||
<span class="c1"># Change the DLL used by DbgHelpProxy</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">DbgHelpProxy</span><span class="o">.</span><span class="n">APIDLL</span> <span class="o">=</span> <span class="n">path</span>
|
||||
<span class="k">return</span></div>
|
||||
|
||||
<span class="c1"># Load symbol config from ENV if present</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">env_dbghelp_path</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s2">"PFW_DBGHELP_PATH"</span><span class="p">]</span>
|
||||
<span class="c1"># Setup the dbghelp path used by PFW</span>
|
||||
<span class="n">set_dbghelp_path</span><span class="p">(</span><span class="n">env_dbghelp_path</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">KeyError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">SymbolInfoBase</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a Symbol.</span>
|
||||
<span class="sd"> This class in based on the class `SYMBOL_INFO <https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/ns-dbghelp-symbol_info>`_</span>
|
||||
<span class="sd"> with the handling on displacement embeded into it.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Init on ctypes struct is not always called</span>
|
||||
<span class="c1"># resolver & displacement should be set manually</span>
|
||||
<span class="n">CHAR_TYPE</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</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="bp">self</span><span class="o">.</span><span class="n">resolver</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"resolver"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="c1">#: POUET POUET</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">displacement</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"displacement"</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> <span class="c1">#: POUET POUET</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">as_type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># assert self.Address == 0 ?</span>
|
||||
<span class="k">return</span> <span class="n">SymbolType</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Index</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ModBase</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">resolver</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The name of the symbol"""</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">NameLen</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="n">size</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">NameLen</span>
|
||||
<span class="n">addr</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">Name</span><span class="o">.</span><span class="n">offset</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">CHAR_TYPE</span> <span class="o">*</span> <span class="n">size</span><span class="p">)</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="n">addr</span><span class="p">)[:]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">fullname</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The fullname of the symbol in the windbg format ``mod!sym+displacement``"""</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">addr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The address of the symbol"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">Address</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">displacement</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The address of the start of the symbol</span>
|
||||
<span class="sd"> If the symbol include a displacement, it is not taken into account</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">Address</span>
|
||||
|
||||
<span class="nd">@property</span> <span class="c1"># Fixed ?</span>
|
||||
<span class="k">def</span> <span class="nf">module</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The module containing the symbol</span>
|
||||
|
||||
<span class="sd"> :type: :class:`SymbolModule`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">resolver</span><span class="o">.</span><span class="n">get_module</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">ModBase</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">tag</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The Tag of the module</span>
|
||||
|
||||
<span class="sd"> :type: :class:`~windows.generated_def.winstructs.SymTagEnum`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SymTagEnum</span><span class="o">.</span><span class="n">mapper</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">Tag</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__int__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""An alias for ``addr``"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">addr</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The fullname of the symbol in the windbg format ``mod!sym+displacement``"""</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">displacement</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">{self.module.name}</span><span class="s2">!</span><span class="si">{self.name}</span><span class="s2">+</span><span class="si">{self.displacement:#x}</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="bp">self</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"</span><span class="si">{self.module.name}</span><span class="s2">!</span><span class="si">{self.name}</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="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">displacement</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> name="</span><span class="si">{1}</span><span class="s1">" start=</span><span class="si">{2:#x}</span><span class="s1"> displacement=</span><span class="si">{3:#x}</span><span class="s1"> tag=</span><span class="si">{4}</span><span class="s1">>'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">displacement</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> name="</span><span class="si">{1}</span><span class="s1">" start=</span><span class="si">{2:#x}</span><span class="s1"> tag=</span><span class="si">{3}</span><span class="s1">>'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">start</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SymbolInfoA"><a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.SymbolInfoA">[docs]</a><span class="k">class</span> <span class="nc">SymbolInfoA</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SYMBOL_INFO</span><span class="p">,</span> <span class="n">SymbolInfoBase</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a Symbol.</span>
|
||||
<span class="sd"> This class in based on the class `SYMBOL_INFO <https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/ns-dbghelp-symbol_info>`_</span>
|
||||
<span class="sd"> with the handling on displacement embeded into it.s</span>
|
||||
|
||||
<span class="sd"> Exemple:</span>
|
||||
|
||||
<span class="sd"> >>> sh = windows.debug.symbols.VirtualSymbolHandler()</span>
|
||||
<span class="sd"> >>> mod = sh.load_file(r"c:\windows\system32\kernelbase.dll")</span>
|
||||
<span class="sd"> >>> sym1 = sh["kernelbase!CreateFileW"]</span>
|
||||
<span class="sd"> >>> sym2 = sh[int(sym1) + 3]</span>
|
||||
<span class="sd"> >>> sym2</span>
|
||||
<span class="sd"> <SymbolInfoA name="CreateFileW" start=0x100f20b0 displacement=0x3 tag=SymTagPublicSymbol></span>
|
||||
<span class="sd"> >>> hex(sym2.start)</span>
|
||||
<span class="sd"> '0x100f20b0L'</span>
|
||||
<span class="sd"> >>> hex(sym2.addr)</span>
|
||||
<span class="sd"> '0x100f20b3L'</span>
|
||||
<span class="sd"> >>> hex(sym2.displacement)</span>
|
||||
<span class="sd"> '0x3L'</span>
|
||||
<span class="sd"> >>> str(sym2)</span>
|
||||
<span class="sd"> 'kernelbase!CreateFileW+0x3'</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">CHAR_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CHAR</span></div>
|
||||
|
||||
<span class="k">class</span> <span class="nc">SymbolInfoW</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SYMBOL_INFOW</span><span class="p">,</span> <span class="n">SymbolInfoBase</span><span class="p">):</span>
|
||||
<span class="n">CHAR_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">WCHAR</span>
|
||||
|
||||
<span class="c1"># We use the A Api in our code (for now)</span>
|
||||
<span class="n">SymbolInfo</span> <span class="o">=</span> <span class="n">SymbolInfoA</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">SymbolType</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">typeid</span><span class="p">,</span> <span class="n">modbase</span><span class="p">,</span> <span class="n">resolver</span><span class="p">):</span>
|
||||
<span class="c1"># Inheritance ?</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">resolver</span> <span class="o">=</span> <span class="n">resolver</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_typeid</span> <span class="o">=</span> <span class="n">typeid</span> <span class="c1"># Kind of a handle. Different of typeid property.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">modbase</span> <span class="o">=</span> <span class="n">modbase</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_type_info</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">typeinfo</span><span class="p">,</span> <span class="n">ires</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">ires</span>
|
||||
<span class="k">if</span> <span class="n">res</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">TST_TYPE_RES_TYPE</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">typeinfo</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</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">SymGetTypeInfo</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">resolver</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modbase</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">_typeid</span><span class="p">,</span> <span class="n">typeinfo</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">res</span><span class="p">))</span>
|
||||
<span class="k">if</span> <span class="n">ires</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">ires</span>
|
||||
<span class="n">newres</span> <span class="o">=</span> <span class="n">res</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LPWSTR</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">LocalFree</span><span class="p">(</span><span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">newres</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_SYMNAME</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_LENGTH</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">tag</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_SYMTAG</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Diff type/typeid ?</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">new_typeid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_TYPE</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">typeid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">new_typeid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_TYPEID</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">basetype</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BasicType</span><span class="o">.</span><span class="n">mapper</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_BASETYPE</span><span class="p">)]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">datakind</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DataKind</span><span class="o">.</span><span class="n">mapper</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_DATAKIND</span><span class="p">)]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">udtkind</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">UdtKind</span><span class="o">.</span><span class="n">mapper</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_UDTKIND</span><span class="p">)]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">offset</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_OFFSET</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">nb_children</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_CHILDRENCOUNT</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">children</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">count</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">nb_children</span>
|
||||
<span class="k">class</span> <span class="nc">res_struct</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">Structure</span><span class="p">):</span>
|
||||
<span class="n">_fields_</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">"Count"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ULONG</span><span class="p">),</span> <span class="p">(</span><span class="s2">"Start"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ULONG</span><span class="p">),</span> <span class="p">(</span><span class="s2">"Types"</span><span class="p">,</span> <span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">ULONG</span> <span class="o">*</span> <span class="n">count</span><span class="p">))]</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">res_struct</span><span class="p">()</span>
|
||||
<span class="n">x</span><span class="o">.</span><span class="n">Count</span> <span class="o">=</span> <span class="n">count</span>
|
||||
<span class="n">x</span><span class="o">.</span><span class="n">Start</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_get_type_info</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TI_FINDCHILDREN</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">new_typeid</span><span class="p">(</span><span class="n">ch</span><span class="p">)</span> <span class="k">for</span> <span class="n">ch</span> <span class="ow">in</span> <span class="n">x</span><span class="o">.</span><span class="n">Types</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># Constructor</span>
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">from_symbol_info</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">syminfo</span><span class="p">,</span> <span class="n">resolver</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">syminfo</span><span class="o">.</span><span class="n">TypeIndex</span><span class="p">,</span> <span class="n">syminfo</span><span class="o">.</span><span class="n">ModBase</span><span class="p">,</span> <span class="n">resolver</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Constructor</span>
|
||||
<span class="k">def</span> <span class="nf">new_typeid</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">newtypeid</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)(</span><span class="n">newtypeid</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modbase</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">resolver</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SymTagBaseType</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> <basetype> </span><span class="si">{1}</span><span class="s1">>'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">basetype</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> name="</span><span class="si">{1}</span><span class="s1">" tag=</span><span class="si">{2}</span><span class="s1">>'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">tag</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SymbolModule"><a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.SymbolModule">[docs]</a><span class="k">class</span> <span class="nc">SymbolModule</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">IMAGEHLP_MODULE64</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a loaded symbol module</span>
|
||||
<span class="sd"> (see `MSDN IMAGEHLP_MODULE64 <https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/ns-dbghelp-imagehlp_module64>`_)</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
|
||||
<span class="sd"> This represent a module in the ``symbol space`` for symbol resolution.</span>
|
||||
<span class="sd"> This can be completly virtual (particularly in the case of :class:`VirtualSymbolHandler`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Init on ctypes struct is not always called</span>
|
||||
<span class="c1"># resolver should be set manually</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resolver</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">resolver</span> <span class="o">=</span> <span class="n">resolver</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">addr</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The load address of the module"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">BaseOfImage</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The name of the module"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ModuleName</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">path</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The full path and file name of the file from which symbols were loaded."""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">LoadedImageName</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The type of module (:class:`~windows.generated_def.winstructs.SYM_TYPE`),</span>
|
||||
<span class="sd"> which can be one of:</span>
|
||||
|
||||
<span class="sd"> =========== =========================</span>
|
||||
<span class="sd"> SymCoff COFF symbols.</span>
|
||||
<span class="sd"> SymCv CodeView symbols.</span>
|
||||
<span class="sd"> SymDeferred Symbol loading deferred.</span>
|
||||
<span class="sd"> SymDia DIA symbols.</span>
|
||||
<span class="sd"> SymExport Symbols generated from a DLL export table.</span>
|
||||
<span class="sd"> SymNone No symbols are loaded.</span>
|
||||
<span class="sd"> SymPdb PDB symbols.</span>
|
||||
<span class="sd"> SymSym .sym file.</span>
|
||||
<span class="sd"> SymVirtual The virtual module created by SymLoadModuleEx with SLMFLAG_VIRTUAL.</span>
|
||||
<span class="sd"> =========== =========================</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">SymType</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">pdb</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The local path of the loaded PDB if present</span>
|
||||
|
||||
<span class="sd"> Exemple:</span>
|
||||
<span class="sd"> >>> sh = windows.debug.symbols.VirtualSymbolHandler()</span>
|
||||
<span class="sd"> >>> mod = sh.load_file(r"c:\windows\system32\kernelbase.dll")</span>
|
||||
<span class="sd"> >>> mod.pdb</span>
|
||||
<span class="sd"> 'd:\\symbols\\wkernelbase.pdb\\017FA9C5278235B7E6BFBA74A9A5AAD91\\wkernelbase.pdb'</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">LoadedPdbName</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">LoadedPdbName</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">LoadedPdbName</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="n">LoadedPdbName</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">pdb_basename</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">LoadedPdbName</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="sa">b</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">)[</span><span class="o">-</span><span class="mi">1</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> name="</span><span class="si">{1}</span><span class="s1">" type=</span><span class="si">{2}</span><span class="s1"> pdb="</span><span class="si">{3}</span><span class="s1">" addr=</span><span class="si">{4:#x}</span><span class="s1">>'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">value</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">pdb_basename</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">addr</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="c1"># https://docs.microsoft.com/en-us/windows/win32/debug/symbol-handler-initialization</span>
|
||||
<span class="k">class</span> <span class="nc">SymbolHandler</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Base class of symbol handler"""</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="n">search_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">invade_process</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="c1"># https://docs.microsoft.com/en-us/windows/desktop/api/dbghelp/nf-dbghelp-syminitialize</span>
|
||||
<span class="c1"># This value should be unique and nonzero, but need not be a process handle.</span>
|
||||
<span class="c1"># be sure to use the correct handle.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">handle</span> <span class="c1">#: The handle of the symbol handler</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">engine</span><span class="o">.</span><span class="n">options_already_setup</span><span class="p">:</span>
|
||||
<span class="n">engine</span><span class="o">.</span><span class="n">set_options</span><span class="p">(</span><span class="n">DEFAULT_DBG_OPTION</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">SymInitialize</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">search_path</span><span class="p">,</span> <span class="n">invade_process</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">load_module</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">file_handle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">addr</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="sd">"""Load a module at a given ``addr``. The module to load can be pass via a ``file_handle``</span>
|
||||
<span class="sd"> or the direct ``path`` of the file to load.</span>
|
||||
|
||||
<span class="sd"> :return: :class:`SymbolModule` -- The loaded module</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
|
||||
<span class="sd"> The logic of ``SymLoadModuleEx`` seems somewhat strange about the naming of the loaded module.</span>
|
||||
<span class="sd"> A custom module ``name`` is only taken into account if the file is passed via a File handle.</span>
|
||||
<span class="sd"> To make it more intuitive, if this function is call with a ``path`` and ``name`` and no ``file_handle``,</span>
|
||||
<span class="sd"> it will open the path and directly call ``SymLoadModuleEx`` with a file handle and a name.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="c1"># Is that a bug in SymLoadModuleEx ?</span>
|
||||
<span class="c1"># To get a custom name for a module it use "path"</span>
|
||||
<span class="c1"># So we need to use file_handle and set a custom path</span>
|
||||
<span class="c1"># ! BUT it means we cannot get a custom name for a module where the path is not explicit and need to be searched</span>
|
||||
<span class="k">if</span> <span class="n">name</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">file_handle</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">exists</span><span class="p">(</span><span class="n">path</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="n">file_handle</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">get_handle_from_file</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">pass</span>
|
||||
<span class="c1"># Expect a-string</span>
|
||||
<span class="n">path</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">raw_encode</span><span class="p">(</span><span class="n">path</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">load_addr</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">SymLoadModuleEx</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">file_handle</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="c1"># if e.winerror == 0:</span>
|
||||
<span class="c1"># Already loaded ?</span>
|
||||
<span class="c1"># What if someone try to load another PE at the same BaseOfDll ?</span>
|
||||
<span class="c1"># return BaseOfDll</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_module</span><span class="p">(</span><span class="n">load_addr</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">load_file</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">addr</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="sd">"""Load the module ``path`` at ``addr``</span>
|
||||
|
||||
<span class="sd"> :return: :class:`SymbolModule` -- The loaded module</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">path</span><span class="o">=</span><span class="n">path</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">addr</span><span class="o">=</span><span class="n">addr</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">size</span><span class="p">,</span> <span class="n">data</span><span class="o">=</span><span class="n">data</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">flags</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">unload</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
|
||||
<span class="sd">"""Unload the module at ``addr``"""</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">SymUnloadModule64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">addr</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="nd">@staticmethod</span>
|
||||
<span class="nd">@ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">BOOL</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PCSTR</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD64</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">py_object</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">modules_aggregator</span><span class="p">(</span><span class="n">modname</span><span class="p">,</span> <span class="n">modaddr</span><span class="p">,</span> <span class="n">ctx</span><span class="p">):</span>
|
||||
<span class="n">ctx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">modaddr</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">modules</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The list of loaded modules</span>
|
||||
|
||||
<span class="sd"> :return: [:class:`SymbolModule`] -- A list of modules</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">res</span> <span class="o">=</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">SymEnumerateModules64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">modules_aggregator</span><span class="p">,</span> <span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">get_module</span><span class="p">(</span><span class="n">addr</span><span class="p">)</span> <span class="k">for</span> <span class="n">addr</span> <span class="ow">in</span> <span class="n">res</span><span class="p">]</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_module</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">base</span><span class="p">):</span>
|
||||
<span class="n">modinfo</span> <span class="o">=</span> <span class="n">SymbolModule</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">modinfo</span><span class="o">.</span><span class="n">SizeOfStruct</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">modinfo</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">SymGetModuleInfo64</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">base</span><span class="p">,</span> <span class="n">modinfo</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">modinfo</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">symbol_and_displacement_from_address</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">):</span>
|
||||
<span class="n">displacement</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD64</span><span class="p">()</span>
|
||||
<span class="n">max_len_size</span> <span class="o">=</span> <span class="mh">0x1000</span>
|
||||
<span class="n">full_size</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">SymbolInfo</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="n">max_len_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">buff</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">SymbolInfo</span><span class="p">)(</span><span class="n">size</span><span class="o">=</span><span class="n">full_size</span><span class="p">)</span>
|
||||
<span class="n">sym</span> <span class="o">=</span> <span class="n">buff</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">SizeOfStruct</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">SymbolInfo</span><span class="p">)</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">MaxNameLen</span> <span class="o">=</span> <span class="n">max_len_size</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">SymFromAddr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">displacement</span><span class="p">,</span> <span class="n">buff</span><span class="p">)</span> <span class="c1"># SymFromAddrW ?</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">resolver</span> <span class="o">=</span> <span class="bp">self</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">displacement</span> <span class="o">=</span> <span class="n">displacement</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="k">return</span> <span class="n">sym</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">symbol_from_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="n">max_len_size</span> <span class="o">=</span> <span class="mh">0x1000</span>
|
||||
<span class="n">full_size</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">SymbolInfo</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="n">max_len_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">buff</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">SymbolInfo</span><span class="p">)(</span><span class="n">size</span><span class="o">=</span><span class="n">full_size</span><span class="p">)</span>
|
||||
<span class="n">sym</span> <span class="o">=</span> <span class="n">buff</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">SizeOfStruct</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">SymbolInfo</span><span class="p">)</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">MaxNameLen</span> <span class="o">=</span> <span class="n">max_len_size</span>
|
||||
<span class="c1"># Expect a-string</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">raw_encode</span><span class="p">(</span><span class="n">name</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">SymFromName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">buff</span><span class="p">)</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">resolver</span> <span class="o">=</span> <span class="bp">self</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">displacement</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">return</span> <span class="n">sym</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">resolve</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name_or_addr</span><span class="p">):</span>
|
||||
<span class="sd">"""Resolve ``name_or_addr``.</span>
|
||||
|
||||
<span class="sd"> If its an int -> Return the :class:`SymbolInfo` at the address.</span>
|
||||
<span class="sd"> If its a string -> Return the :class:`SymbolInfo` corresponding to the symbol name</span>
|
||||
|
||||
<span class="sd"> :return: :class:`SymbolInfo`</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
|
||||
<span class="sd"> ``__getitem__`` is an alias for ``resolve()``</span>
|
||||
|
||||
<span class="sd"> Exemple:</span>
|
||||
|
||||
<span class="sd"> >>> sh = windows.debug.symbols.VirtualSymbolHandler()</span>
|
||||
<span class="sd"> >>> mod = sh.load_file(r"c:\windows\system32\kernelbase.dll")</span>
|
||||
<span class="sd"> >>> mod</span>
|
||||
<span class="sd"> <SymbolModule name="kernelbase" type=SymPdb pdb="wkernelbase.pdb" addr=0x10000000></span>
|
||||
<span class="sd"> >>> sh.resolve("kernelbase!CreateFileInternal")</span>
|
||||
<span class="sd"> <SymbolInfoA name="CreateFileInternal" addr=0x100f2120 tag=SymTagFunction></span>
|
||||
<span class="sd"> >>> sh[0x100f2042]</span>
|
||||
<span class="sd"> <SymbolInfoA name="ReadFile" addr=0x100f1ee0 displacement=0x162 tag=SymTagFunction></span>
|
||||
<span class="sd"> >>> str(sh[0x100f2042])</span>
|
||||
<span class="sd"> 'kernelbase!ReadFile+0x162'</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Only returns None if symbol is not Found ?</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name_or_addr</span><span class="p">,</span> <span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">anybuff</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">symbol_from_name</span><span class="p">(</span><span class="n">name_or_addr</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">symbol_and_displacement_from_address</span><span class="p">(</span><span class="n">name_or_addr</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">!=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_MOD_NOT_FOUND</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="c1"># We could not resolve and address -> return None</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
<span class="fm">__getitem__</span> <span class="o">=</span> <span class="n">resolve</span>
|
||||
<span class="sd">"""Alias to resolve for simpler use"""</span>
|
||||
|
||||
<span class="nd">@staticmethod</span>
|
||||
<span class="nd">@ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">BOOL</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">SymbolInfo</span><span class="p">),</span> <span class="n">gdef</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">py_object</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">simple_aggregator</span><span class="p">(</span><span class="n">info</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">ctx</span><span class="p">):</span>
|
||||
<span class="n">sym</span> <span class="o">=</span> <span class="n">info</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="n">fullsize</span> <span class="o">=</span> <span class="n">sym</span><span class="o">.</span><span class="n">SizeOfStruct</span> <span class="o">+</span> <span class="n">sym</span><span class="o">.</span><span class="n">NameLen</span>
|
||||
<span class="n">cpy</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">SymbolInfo</span><span class="p">)(</span><span class="n">size</span><span class="o">=</span><span class="n">fullsize</span><span class="p">)</span>
|
||||
<span class="n">ctypes</span><span class="o">.</span><span class="n">memmove</span><span class="p">(</span><span class="n">cpy</span><span class="p">,</span> <span class="n">info</span><span class="p">,</span> <span class="n">fullsize</span><span class="p">)</span>
|
||||
<span class="n">ctx</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">cpy</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">search</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">mask</span><span class="p">,</span> <span class="n">mod</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">tag</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">options</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">SYMSEARCH_ALLITEMS</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Search the symbols matching ``mask`` (``Windbg`` like).</span>
|
||||
|
||||
<span class="sd"> :return: [:class:`SymbolInfo`] -- A list of :class:`SymbolInfo`</span>
|
||||
|
||||
<span class="sd"> >>> sh = windows.debug.symbols.VirtualSymbolHandler()</span>
|
||||
<span class="sd"> >>> mod = sh.load_file(r"c:\windows\system32\kernelbase.dll")</span>
|
||||
<span class="sd"> >>> sh.search("kernelbase!CreateFile*")</span>
|
||||
<span class="sd"> [<SymbolInfoA name="CreateFileInternal" addr=0x100f2120 tag=SymTagFunction>,</span>
|
||||
<span class="sd"> <SymbolInfoA name="CreateFileMoniker" addr=0x10117d80 tag=SymTagFunction>,</span>
|
||||
<span class="sd"> <SymbolInfoA name="CreateFile2" addr=0x1011e690 tag=SymTagFunction>,</span>
|
||||
<span class="sd"> ...]</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">callback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">simple_aggregator</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">callback</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">BOOL</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">SymbolInfo</span><span class="p">),</span> <span class="n">gdef</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">py_object</span><span class="p">)(</span><span class="n">callback</span><span class="p">)</span>
|
||||
|
||||
<span class="n">addr</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="n">mod</span><span class="p">,</span> <span class="s2">"addr"</span><span class="p">,</span> <span class="n">mod</span><span class="p">)</span> <span class="c1"># Retrieve mod.addr, else us the value directly</span>
|
||||
<span class="c1"># Expect A-string</span>
|
||||
<span class="n">mask</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">raw_encode</span><span class="p">(</span><span class="n">mask</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">SymSearch</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD64</span><span class="p">(</span><span class="n">addr</span><span class="p">),</span> <span class="mi">0</span><span class="p">,</span> <span class="n">tag</span><span class="p">,</span> <span class="n">mask</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">res</span><span class="p">,</span> <span class="n">options</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">sym</span> <span class="ow">in</span> <span class="n">res</span><span class="p">:</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">resolver</span> <span class="o">=</span> <span class="bp">self</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">displacement</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_symbols</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">callback</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">simple_aggregator</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">callback</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">BOOL</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">SymbolInfo</span><span class="p">),</span> <span class="n">gdef</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">py_object</span><span class="p">)(</span><span class="n">callback</span><span class="p">)</span>
|
||||
<span class="k">try</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">SymEnumSymbolsForAddr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_MOD_NOT_FOUND</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[]</span>
|
||||
<span class="k">raise</span>
|
||||
|
||||
<span class="k">for</span> <span class="n">sym</span> <span class="ow">in</span> <span class="n">res</span><span class="p">:</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">resolver</span> <span class="o">=</span> <span class="bp">self</span>
|
||||
<span class="n">sym</span><span class="o">.</span><span class="n">displacement</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<span class="c1"># Type stuff</span>
|
||||
<span class="k">def</span> <span class="nf">get_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">mod</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="n">max_len_size</span> <span class="o">=</span> <span class="mh">0x1000</span>
|
||||
<span class="n">full_size</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">SymbolInfo</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="n">max_len_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
|
||||
<span class="n">buff</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">SymbolInfo</span><span class="p">)(</span><span class="n">size</span><span class="o">=</span><span class="n">full_size</span><span class="p">)</span>
|
||||
<span class="n">buff</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">SizeOfStruct</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">SymbolInfo</span><span class="p">)</span>
|
||||
<span class="n">buff</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">MaxNameLen</span> <span class="o">=</span> <span class="n">max_len_size</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">SymGetTypeFromName</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">mod</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">buff</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">SymbolType</span><span class="o">.</span><span class="n">from_symbol_info</span><span class="p">(</span><span class="n">buff</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">resolver</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="c1"># TODO: mets de l'huile pour w4kfu</span>
|
||||
<span class="k">class</span> <span class="nc">StackWalker</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resolver</span><span class="p">,</span> <span class="n">process</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">thread</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context</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">resolver</span> <span class="o">=</span> <span class="n">resolver</span>
|
||||
<span class="k">if</span> <span class="n">process</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">thread</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"At least a process or thread must be provided"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">process</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">process</span> <span class="o">=</span> <span class="n">thread</span><span class="o">.</span><span class="n">owner</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">process</span> <span class="o">=</span> <span class="n">process</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">thread</span> <span class="o">=</span> <span class="n">thread</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">context</span> <span class="o">=</span> <span class="n">context</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span> <span class="ow">and</span> <span class="n">process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"StackWalking 64b does not seems to works from 32b process"</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_stack_frame_generator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">ctx</span><span class="p">,</span> <span class="n">machine</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_effective_context_and_machine</span><span class="p">()</span>
|
||||
<span class="n">frame</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_setup_initial_frame_from_context</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">machine</span><span class="p">)</span>
|
||||
<span class="n">thread_handle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">thread</span><span class="o">.</span><span class="n">handle</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">thread</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
||||
<span class="k">try</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">StackWalkEx</span><span class="p">(</span><span class="n">machine</span><span class="p">,</span>
|
||||
<span class="c1"># dbg.current_process.handle,</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">resolver</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span>
|
||||
<span class="n">thread_handle</span><span class="p">,</span>
|
||||
<span class="c1"># 0,</span>
|
||||
<span class="n">frame</span><span class="p">,</span>
|
||||
<span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">ctx</span><span class="p">),</span>
|
||||
<span class="kc">None</span><span class="p">,</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">resolve</span><span class="p">(</span><span class="n">winproxy</span><span class="o">.</span><span class="n">SymFunctionTableAccess64</span><span class="p">),</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">resolve</span><span class="p">(</span><span class="n">winproxy</span><span class="o">.</span><span class="n">SymGetModuleBase64</span><span class="p">),</span>
|
||||
<span class="kc">None</span><span class="p">,</span>
|
||||
<span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="c1"># No_ERROR -> end of stack walking</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">yield</span> <span class="nb">type</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">frame</span><span class="p">)</span> <span class="c1"># Make a copy ?</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_stack_frame_generator</span><span class="p">()</span>
|
||||
|
||||
<span class="c1"># Autorise to force the retrieving of 32b stack when code is currently on 64b code ?</span>
|
||||
<span class="k">def</span> <span class="nf">_get_effective_context_and_machine</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">ctx</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">context</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">thread</span><span class="o">.</span><span class="n">context</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="c1"># Process is 32b, so the context is inevitably x86</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="c1"># If we are 32b, we will only be able to handle x86 stack</span>
|
||||
<span class="c1"># ctx is obligatory a 32b one, as the case us32/target64 is handled</span>
|
||||
<span class="c1"># in __init__ with a NotImplementedError</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="c1"># Process is 64b, so the context is inevitably x64</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_AMD64</span><span class="p">)</span>
|
||||
<span class="c1"># Thing get a little more complicated here :)</span>
|
||||
<span class="c1"># We are a 64b process and target is 32b.</span>
|
||||
<span class="c1"># So we must find-out if we are in 32 or 64b world at the moment.</span>
|
||||
<span class="c1"># The context_syswow.SegCS give us the information</span>
|
||||
<span class="c1"># The context32.SegCs would be always 32</span>
|
||||
<span class="n">ctxsyswow</span> <span class="o">=</span> <span class="n">dbg</span><span class="o">.</span><span class="n">current_thread</span><span class="o">.</span><span class="n">context_syswow</span>
|
||||
<span class="k">if</span> <span class="n">ctxsyswow</span><span class="o">.</span><span class="n">SegCs</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CS_USER_32B</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">ctxsyswow</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_AMD64</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_setup_initial_frame_from_context</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctx</span><span class="p">,</span> <span class="n">machine</span><span class="p">):</span>
|
||||
<span class="n">frame</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">STACKFRAME_EX</span><span class="p">()</span>
|
||||
<span class="n">frame</span><span class="o">.</span><span class="n">AddrPC</span><span class="o">.</span><span class="n">Mode</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">AddrModeFlat</span>
|
||||
<span class="n">frame</span><span class="o">.</span><span class="n">AddrFrame</span><span class="o">.</span><span class="n">Mode</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">AddrModeFlat</span>
|
||||
<span class="n">frame</span><span class="o">.</span><span class="n">AddrStack</span><span class="o">.</span><span class="n">Mode</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">AddrModeFlat</span>
|
||||
<span class="n">frame</span><span class="o">.</span><span class="n">AddrPC</span><span class="o">.</span><span class="n">Offset</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="n">pc</span>
|
||||
<span class="n">frame</span><span class="o">.</span><span class="n">AddrStack</span><span class="o">.</span><span class="n">Offset</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="n">sp</span>
|
||||
<span class="k">if</span> <span class="n">machine</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IMAGE_FILE_MACHINE_I386</span><span class="p">:</span>
|
||||
<span class="n">frame</span><span class="o">.</span><span class="n">AddrFrame</span><span class="o">.</span><span class="n">Offset</span> <span class="o">=</span> <span class="n">ctx</span><span class="o">.</span><span class="n">Ebp</span>
|
||||
<span class="c1"># Need RBP on 64b ?</span>
|
||||
<span class="k">return</span> <span class="n">frame</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="VirtualSymbolHandler"><a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.VirtualSymbolHandler">[docs]</a><span class="k">class</span> <span class="nc">VirtualSymbolHandler</span><span class="p">(</span><span class="n">SymbolHandler</span><span class="p">):</span>
|
||||
<span class="sd">"""A SymbolHandler where its handle is not a valid process handle</span>
|
||||
<span class="sd"> Allow to create/resolve symbol in a 'virtual' process</span>
|
||||
<span class="sd"> But all API needing a real process handle will fail</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">VIRTUAL_HANDLER_COUNTER</span> <span class="o">=</span> <span class="n">itertools</span><span class="o">.</span><span class="n">count</span><span class="p">(</span><span class="mh">0x11223344</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">search_path</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="n">handle</span> <span class="o">=</span> <span class="nb">next</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">VIRTUAL_HANDLER_COUNTER</span><span class="p">)</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">VirtualSymbolHandler</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="n">handle</span><span class="p">,</span> <span class="n">search_path</span><span class="p">,</span> <span class="kc">False</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># The VirtualSymbolHandler is not based on an existing process</span>
|
||||
<span class="c1"># So load() in its simplest for should just take the path of the file to load</span>
|
||||
<span class="n">load</span> <span class="o">=</span> <span class="n">SymbolHandler</span><span class="o">.</span><span class="n">load_file</span>
|
||||
<span class="sd">"""An alias for :func:`VirtualSymbolHandler.load_file`"""</span>
|
||||
|
||||
<div class="viewcode-block" id="VirtualSymbolHandler.refresh"><a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.VirtualSymbolHandler.refresh">[docs]</a> <span class="k">def</span> <span class="nf">refresh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Do nothing for a :class:`VirtualSymbolHandler`"""</span>
|
||||
<span class="k">return</span> <span class="kc">False</span></div></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ProcessSymbolHandler"><a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.ProcessSymbolHandler">[docs]</a><span class="k">class</span> <span class="nc">ProcessSymbolHandler</span><span class="p">(</span><span class="n">SymbolHandler</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">process</span><span class="p">,</span> <span class="n">search_path</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">invade_process</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ProcessSymbolHandler</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="n">process</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">search_path</span><span class="p">,</span> <span class="n">invade_process</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">process</span>
|
||||
|
||||
<span class="c1"># The ProcessSymbolHandler is based on an existing process</span>
|
||||
<span class="c1"># So load() in its simplest form should be able to load the symbol for an existing</span>
|
||||
<span class="c1"># module that is already loaded</span>
|
||||
<span class="c1"># Question: should be able to load other module at other address ?</span>
|
||||
<div class="viewcode-block" id="ProcessSymbolHandler.load"><a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.ProcessSymbolHandler.load">[docs]</a> <span class="k">def</span> <span class="nf">load</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="sd">"""Load the :class:`SymbolModule` associated with the loaded module ``name`` (as found in the PEB)</span>
|
||||
|
||||
<span class="sd"> :return: :class:`SymbolModule`</span>
|
||||
|
||||
<span class="sd"> Exemple:</span>
|
||||
|
||||
<span class="sd"> >>> sh = windows.debug.symbols.ProcessSymbolHandler(windows.test.pop_proc_64())</span>
|
||||
<span class="sd"> <windows.debug.symbols.ProcessSymbolHandler object at 0x033A2C30></span>
|
||||
<span class="sd"> >>> sh</span>
|
||||
<span class="sd"> <windows.debug.symbols.ProcessSymbolHandler object at 0x033A2C30></span>
|
||||
<span class="sd"> >>> sh.load("kernelbase.dll")</span>
|
||||
<span class="sd"> <SymbolModule name="kernelbase" type=SymDeferred pdb="" addr=0x7ffb5b090000></span>
|
||||
<span class="sd"> >>> sh["kernelbase!CreateProcessA"]</span>
|
||||
<span class="sd"> <SymbolInfoA name="CreateProcessA" start=0x7ffb5b2371f0 tag=SymTagPublicSymbol></span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">mods</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="o">.</span><span class="n">peb</span><span class="o">.</span><span class="n">modules</span> <span class="k">if</span> <span class="n">x</span><span class="o">.</span><span class="n">name</span> <span class="o">==</span> <span class="n">name</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">mods</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Could not find module <</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">name</span><span class="p">))</span>
|
||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">mods</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="c1"># Load all if multiple match ?</span>
|
||||
<span class="n">mod</span> <span class="o">=</span> <span class="n">mods</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">addr</span><span class="o">=</span><span class="n">mod</span><span class="o">.</span><span class="n">baseaddr</span><span class="p">,</span> <span class="n">path</span><span class="o">=</span><span class="n">mod</span><span class="o">.</span><span class="n">fullname</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ProcessSymbolHandler.refresh"><a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.ProcessSymbolHandler.refresh">[docs]</a> <span class="k">def</span> <span class="nf">refresh</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Update the list of loaded modules to match the modules present in the target process</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
<span class="sd"> This function only call `SymRefreshModuleList <https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/nf-dbghelp-symrefreshmodulelist>`_ for now.</span>
|
||||
<span class="sd"> It seems that this function do not handle refreshing a 64b target from a 32b python</span>
|
||||
|
||||
<span class="sd"> Also, on a 32b target from a 64b python it seems to only load symbols for the 64b modules (ntdll + syswow dll)</span>
|
||||
|
||||
<span class="sd"> Exemple:</span>
|
||||
|
||||
<span class="sd"> >>> sh = windows.debug.symbols.ProcessSymbolHandler(windows.test.pop_proc_64())</span>
|
||||
<span class="sd"> >>> sh.modules</span>
|
||||
<span class="sd"> []</span>
|
||||
<span class="sd"> >>> sh.refresh()</span>
|
||||
<span class="sd"> 44</span>
|
||||
<span class="sd"> >>> sh.modules</span>
|
||||
<span class="sd"> [<SymbolModule name="notepad" type=SymDeferred pdb="" addr=0x7ff772b80000>,</span>
|
||||
<span class="sd"> <SymbolModule name="ntdll" type=SymDeferred pdb="" addr=0x7ffb5d860000>,</span>
|
||||
<span class="sd"> <SymbolModule name="KERNEL32" type=SymDeferred pdb="" addr=0x7ffb5bb90000>,</span>
|
||||
<span class="sd"> <SymbolModule name="KERNELBASE" type=SymDeferred pdb="" addr=0x7ffb5b090000>,</span>
|
||||
<span class="sd"> ...]</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">SymRefreshModuleList</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">stackwalk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">ctx</span><span class="p">):</span>
|
||||
<span class="k">pass</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="SymbolEngine"><a class="viewcode-back" href="../../../debug.html#windows.debug.symbols.SymbolEngine">[docs]</a><span class="k">class</span> <span class="nc">SymbolEngine</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent the global symbol engine. Just a proxy to get/set global engine options</span>
|
||||
|
||||
<span class="sd"> Its instance can be accessed using ``windows.debug.symbols.engine``</span>
|
||||
|
||||
<span class="sd"> Exemple:</span>
|
||||
|
||||
<span class="sd"> >>> windows.debug.symbols.engine.options</span>
|
||||
<span class="sd"> 6L</span>
|
||||
<span class="sd"> >>> windows.debug.symbols.engine.options = gdef.SYMOPT_UNDNAME</span>
|
||||
<span class="sd"> >>> windows.debug.symbols.engine.options</span>
|
||||
<span class="sd"> 2L</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># use to now if we need to call the setup of options</span>
|
||||
<span class="c1"># At the first DbgHelp call</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options_already_setup</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">set_options</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">options</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">options_already_setup</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">SymSetOptions</span><span class="p">(</span><span class="n">options</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_options</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">SymGetOptions</span><span class="p">()</span>
|
||||
|
||||
<span class="n">options</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">get_options</span><span class="p">,</span> <span class="n">set_options</span><span class="p">)</span>
|
||||
<span class="sd">"""The options of the Symbol engine</span>
|
||||
<span class="sd"> (`see options <https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/nf-dbghelp-symsetoptions#parameters>`_)</span>
|
||||
|
||||
<span class="sd"> .. note::</span>
|
||||
|
||||
<span class="sd"> Default options are: ``gdef.SYMOPT_DEFERRED_LOADS + gdef.SYMOPT_UNDNAME``</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
<span class="n">engine</span> <span class="o">=</span> <span class="n">SymbolEngine</span><span class="p">()</span>
|
||||
<span class="sd">"""The instance of the :class:`SymbolEngine`"""</span>
|
||||
|
||||
|
||||
<span class="n">TST_TYPE_RES_TYPE</span> <span class="o">=</span> <span class="p">{</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_SYMNAME</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LPWSTR</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_LENGTH</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ULONG64</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_ADDRESS</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ULONG64</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">TI_GTIEX_REQS_VALID</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ULONG64</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">TI_GET_SYMTAG</span><span class="p">:</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SymTagEnum</span><span class="p">,</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.6 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-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+19
-16
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.generated_def.flag — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.generated_def.flag — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -44,13 +47,13 @@
|
||||
|
||||
|
||||
<div class="viewcode-block" id="Flag"><a class="viewcode-back" href="../../../generated.html#windows.generated_def.Flag">[docs]</a><span class="k">class</span> <span class="nc">Flag</span><span class="p">(</span><span class="n">long</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">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">Flag</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">value</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">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</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">def</span> <span class="fm">__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:#x}</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">name</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Custom __str__ removed for multiple reason</span>
|
||||
@@ -66,15 +69,15 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">StrFlag</span><span class="p">(</span><span class="nb">str</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">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="bp">cls</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">value</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">StrFlag</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">value</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">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</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">def</span> <span class="fm">__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">name</span><span class="p">,</span> <span class="nb">str</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span>
|
||||
|
||||
<span class="c1"># __str__ = __repr__</span>
|
||||
@@ -91,20 +94,20 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">FlagMapper</span><span class="p">(</span><span class="nb">dict</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="o">*</span><span class="n">values</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">values</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">update</span><span class="p">({</span><span class="n">x</span><span class="p">:</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">values</span><span class="p">})</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__missing__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__missing__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">key</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">FlagExatractor</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">attr</span><span class="p">,</span> <span class="n">values</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">attr</span><span class="p">,</span> <span class="n">values</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attr</span> <span class="o">=</span> <span class="n">attr</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">attrsize</span> <span class="o">=</span> <span class="n">attr</span><span class="o">.</span><span class="n">size</span> <span class="o">*</span> <span class="mi">8</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">mapper</span> <span class="o">=</span> <span class="n">FlagMapper</span><span class="p">(</span><span class="o">*</span><span class="n">values</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__get__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">obj</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">obj</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
<span class="c1"># Retrieve the real value</span>
|
||||
@@ -143,13 +146,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+4862
-4282
File diff suppressed because one or more lines are too long
+17
-14
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.hooks — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.hooks — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -42,10 +45,10 @@
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.utils</span> <span class="k">as</span> <span class="nn">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">native_exec</span>
|
||||
<span class="kn">from</span> <span class="nn">.generated_def</span> <span class="k">import</span> <span class="n">winfuncs</span>
|
||||
<span class="kn">from</span> <span class="nn">.generated_def.windef</span> <span class="k">import</span> <span class="n">PAGE_EXECUTE_READWRITE</span>
|
||||
<span class="kn">from</span> <span class="nn">.generated_def.winstructs</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">native_exec</span>
|
||||
<span class="kn">from</span> <span class="nn">.generated_def</span> <span class="kn">import</span> <span class="n">winfuncs</span>
|
||||
<span class="kn">from</span> <span class="nn">.generated_def.windef</span> <span class="kn">import</span> <span class="n">PAGE_EXECUTE_READWRITE</span>
|
||||
<span class="kn">from</span> <span class="nn">.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="c1"># TODO Not a big fan of importing 'meta' every load</span>
|
||||
<span class="c1"># Should do an Hook API that take the winproxy function (not generate every hook possible)</span>
|
||||
@@ -54,10 +57,10 @@
|
||||
|
||||
<div class="viewcode-block" id="Callback"><a class="viewcode-back" href="../../iat_hook.html#windows.hooks.Callback">[docs]</a><span class="k">class</span> <span class="nc">Callback</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Give type information to hook callback"""</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="o">*</span><span class="n">types</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">types</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">types</span> <span class="o">=</span> <span class="n">types</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">func</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
|
||||
<span class="n">func</span><span class="o">.</span><span class="n">_types_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span>
|
||||
<span class="k">return</span> <span class="n">func</span></div>
|
||||
|
||||
@@ -65,7 +68,7 @@
|
||||
<span class="k">class</span> <span class="nc">KnownCallback</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="n">types</span> <span class="o">=</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="n">func</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
|
||||
<span class="n">func</span><span class="o">.</span><span class="n">_types_info</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">types</span>
|
||||
<span class="k">return</span> <span class="n">func</span>
|
||||
|
||||
@@ -91,7 +94,7 @@
|
||||
<div class="viewcode-block" id="IATHook"><a class="viewcode-back" href="../../iat_hook.html#windows.hooks.IATHook">[docs]</a><span class="k">class</span> <span class="nc">IATHook</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Look at my hook <3"""</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">IAT_entry</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">types</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">IAT_entry</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">types</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">types</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">callback</span><span class="p">,</span> <span class="s2">"_types_info"</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Callback for IATHook has no type infomations"</span><span class="p">)</span>
|
||||
@@ -199,13 +202,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+10
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.native_exec.cpuid — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.native_exec.cpuid — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -43,7 +46,7 @@
|
||||
<span class="kn">import</span> <span class="nn">native_function</span>
|
||||
<span class="kn">import</span> <span class="nn">simple_x86</span> <span class="k">as</span> <span class="nn">x86</span>
|
||||
<span class="kn">import</span> <span class="nn">simple_x64</span> <span class="k">as</span> <span class="nn">x64</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.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_bitness</span><span class="p">():</span>
|
||||
@@ -228,13 +231,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.native_exec.native_function — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.native_exec.native_function — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -45,8 +48,8 @@
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.winproxy</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">simple_x86</span> <span class="k">as</span> <span class="n">x86</span>
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="k">import</span> <span class="n">simple_x64</span> <span class="k">as</span> <span class="n">x64</span>
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">simple_x86</span> <span class="k">as</span> <span class="n">x86</span>
|
||||
<span class="kn">from</span> <span class="nn">.</span> <span class="kn">import</span> <span class="n">simple_x64</span> <span class="k">as</span> <span class="n">x64</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">PyObj</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">Structure</span><span class="p">):</span>
|
||||
@@ -61,7 +64,7 @@
|
||||
<span class="c1"># Specific mmap class for code injection</span>
|
||||
<span class="k">class</span> <span class="nc">MyMap</span><span class="p">(</span><span class="n">mmap</span><span class="o">.</span><span class="n">mmap</span><span class="p">):</span>
|
||||
<span class="sd">""" A mmap that is never unmapped and that contains the page address """</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="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwarg</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</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">kwarg</span><span class="p">):</span>
|
||||
<span class="c1"># Get the page address by 'introspection' of the C struct</span>
|
||||
<span class="n">m</span> <span class="o">=</span> <span class="n">PyMmap</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">m</span><span class="o">.</span><span class="n">ob_addr</span>
|
||||
@@ -100,7 +103,7 @@
|
||||
<span class="k">class</span> <span class="nc">CustomAllocator</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="n">int_size</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'32bit'</span><span class="p">:</span> <span class="mi">4</span><span class="p">,</span> <span class="s1">'64bit'</span><span class="p">:</span> <span class="mi">8</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="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">maps</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cur_offset</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">cur_page_size</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># Force get_new_page on first request</span>
|
||||
@@ -186,13 +189,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+32
-29
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.native_exec.simple_x86 — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.native_exec.simple_x86 — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -51,7 +54,7 @@
|
||||
<span class="n">int_types</span> <span class="o">=</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">class</span> <span class="nc">BitArray</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">size</span><span class="p">,</span> <span class="n">bits</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">bits</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">size</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">bits</span><span class="p">)</span> <span class="o">></span> <span class="n">size</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"size > len(bits)"</span><span class="p">)</span>
|
||||
@@ -76,17 +79,17 @@
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">c</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">bytearray</span><span class="p">((</span><span class="n">res</span><span class="p">))</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">slice</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">slice</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">array</span><span class="p">[</span><span class="nb">slice</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">slice</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">slice</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">array</span><span class="p">[</span><span class="nb">slice</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
<span class="k">return</span> <span class="kc">True</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">repr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">array</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">BitArray</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">NotImplemented</span>
|
||||
<span class="k">return</span> <span class="n">BitArray</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">+</span> <span class="n">other</span><span class="o">.</span><span class="n">size</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">array</span> <span class="o">+</span> <span class="n">other</span><span class="o">.</span><span class="n">array</span><span class="p">)</span>
|
||||
@@ -114,10 +117,10 @@
|
||||
<span class="k">class</span> <span class="nc">Prefix</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="n">PREFIX_VALUE</span> <span class="o">=</span> <span class="kc">None</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="nb">next</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">next</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">next</span> <span class="o">=</span> <span class="nb">next</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__add__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)(</span><span class="n">other</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_code_py3</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
@@ -308,7 +311,7 @@
|
||||
|
||||
<span class="c1"># Instruction Parameters</span>
|
||||
<span class="k">class</span> <span class="nc">FixedRegister</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">register</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">register</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">reg</span> <span class="o">=</span> <span class="n">register</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">accept_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">instr_state</span><span class="p">):</span>
|
||||
@@ -446,7 +449,7 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">ModRM</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">sub_modrm</span><span class="p">,</span> <span class="n">accept_reverse</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">has_direction_bit</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sub_modrm</span><span class="p">,</span> <span class="n">accept_reverse</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">has_direction_bit</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">accept_reverse</span> <span class="o">=</span> <span class="n">accept_reverse</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">has_direction_bit</span> <span class="o">=</span> <span class="n">has_direction_bit</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sub</span> <span class="o">=</span> <span class="n">sub_modrm</span>
|
||||
@@ -478,7 +481,7 @@
|
||||
<span class="k">return</span> <span class="n">X86</span><span class="o">.</span><span class="n">is_reg</span><span class="p">(</span><span class="n">arg1</span><span class="p">)</span> <span class="ow">and</span> <span class="n">X86</span><span class="o">.</span><span class="n">is_reg</span><span class="p">(</span><span class="n">arg2</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">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="p">,</span> <span class="nb">reversed</span><span class="p">,</span> <span class="n">instr_state</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="p">,</span> <span class="nb">reversed</span><span class="p">,</span> <span class="n">instr_state</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">mod</span> <span class="o">=</span> <span class="n">BitArray</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">"11"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">X86</span><span class="o">.</span><span class="n">reg_size</span><span class="p">(</span><span class="n">arg1</span><span class="p">)</span> <span class="o">!=</span> <span class="n">X86</span><span class="o">.</span><span class="n">reg_size</span><span class="p">(</span><span class="n">arg2</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Register size mitmatch between </span><span class="si">{0}</span><span class="s2"> and </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">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="p">))</span>
|
||||
@@ -494,7 +497,7 @@
|
||||
<span class="k">def</span> <span class="nf">match</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">X86</span><span class="o">.</span><span class="n">is_reg</span><span class="p">(</span><span class="n">arg1</span><span class="p">)</span> <span class="ow">and</span> <span class="n">X86</span><span class="o">.</span><span class="n">is_seg_reg</span><span class="p">(</span><span class="n">arg2</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">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="p">,</span> <span class="nb">reversed</span><span class="p">,</span> <span class="n">instr_state</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="p">,</span> <span class="nb">reversed</span><span class="p">,</span> <span class="n">instr_state</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">mod</span> <span class="o">=</span> <span class="n">BitArray</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="s2">"11"</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">rm</span> <span class="o">=</span> <span class="n">X86RegisterSelector</span><span class="o">.</span><span class="n">get_reg_bits</span><span class="p">(</span><span class="n">arg1</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">reg</span> <span class="o">=</span> <span class="n">BitArray</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="n">x86_segment_selectors_number</span><span class="p">[</span><span class="n">arg2</span><span class="o">.</span><span class="n">upper</span><span class="p">()])</span>
|
||||
@@ -513,7 +516,7 @@
|
||||
<span class="k">if</span> <span class="n">X86</span><span class="o">.</span><span class="n">reg_size</span><span class="p">(</span><span class="n">regname</span><span class="p">)</span> <span class="o">==</span> <span class="mi">16</span><span class="p">:</span>
|
||||
<span class="n">instr_state</span><span class="o">.</span><span class="n">prefixes</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">OperandSizeOverride</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">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="p">,</span> <span class="nb">reversed</span><span class="p">,</span> <span class="n">instr_state</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">arg1</span><span class="p">,</span> <span class="n">arg2</span><span class="p">,</span> <span class="nb">reversed</span><span class="p">,</span> <span class="n">instr_state</span><span class="p">):</span>
|
||||
<span class="c1"># ARG1 : REG</span>
|
||||
<span class="c1"># ARG2 : prefix:[MEM]</span>
|
||||
<span class="c1"># Handle prefix:</span>
|
||||
@@ -594,7 +597,7 @@
|
||||
<span class="k">class</span> <span class="nc">Slash</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="s2">"No idea for the name: represent the modRM for single args + encoding in reg (/7 in cmp in man intel)"</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">reg_num</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">reg_num</span><span class="p">):</span>
|
||||
<span class="s2">"reg = 7 for /7"</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">reg</span> <span class="o">=</span> <span class="n">x86_regs</span><span class="p">[</span><span class="n">reg_num</span><span class="p">]</span>
|
||||
|
||||
@@ -609,7 +612,7 @@
|
||||
<span class="k">return</span> <span class="n">arg_consum</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">value</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">ControlRegisterModRM</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">writecr</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">writecr</span> <span class="o">=</span> <span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">writecr</span> <span class="o">=</span> <span class="n">writecr</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">accept_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">instr_state</span><span class="p">):</span>
|
||||
@@ -639,7 +642,7 @@
|
||||
<span class="sd">"""Base class of instructions, use `encoding` to find a valid way to assemble the instruction"""</span>
|
||||
<span class="n">encoding</span> <span class="o">=</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="o">*</span><span class="n">initial_args</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">initial_args</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">type_encoding</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">encoding</span><span class="p">:</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="n">initial_args</span><span class="p">)</span>
|
||||
<span class="n">prefix</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
@@ -675,7 +678,7 @@
|
||||
<span class="c1"># res += other</span>
|
||||
<span class="c1"># return res</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__mul__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">int_types</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">NotImplemented</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">MultipleInstr</span><span class="p">()</span>
|
||||
@@ -688,7 +691,7 @@
|
||||
<span class="k">class</span> <span class="nc">DelayedJump</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""A jump to a label :NAME"""</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="nb">type</span><span class="p">,</span> <span class="n">label</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">type</span><span class="p">,</span> <span class="n">label</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="nb">type</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">label</span> <span class="o">=</span> <span class="n">label</span>
|
||||
|
||||
@@ -696,7 +699,7 @@
|
||||
<span class="k">class</span> <span class="nc">JmpType</span><span class="p">(</span><span class="n">Instruction</span><span class="p">):</span>
|
||||
<span class="sd">"""Dispatcher between a real jump or DelayedJump if parameters is a label"""</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="o">*</span><span class="n">initial_args</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="o">*</span><span class="n">initial_args</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">initial_args</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="n">arg</span> <span class="o">=</span> <span class="n">initial_args</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="ow">and</span> <span class="n">arg</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="s2">":"</span><span class="p">:</span>
|
||||
@@ -709,7 +712,7 @@
|
||||
<span class="sd"> Sub a specified size from the size to jump to `emulate` a jump from the begin address of the instruction"""</span>
|
||||
<span class="n">accept_as_Ximmediat</span> <span class="o">=</span> <span class="kc">None</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">sub</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sub</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sub</span> <span class="o">=</span> <span class="n">sub</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">accept_arg</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">instr_state</span><span class="p">):</span>
|
||||
@@ -949,7 +952,7 @@
|
||||
|
||||
<span class="k">class</span> <span class="nc">Raw</span><span class="p">(</span><span class="n">Instruction</span><span class="p">):</span>
|
||||
<span class="sd">"""Output raw data"""</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="o">*</span><span class="n">initial_args</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">initial_args</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">initial_args</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"raw 'opcode' only accept one argument"</span><span class="p">)</span>
|
||||
<span class="c1"># Accept space</span>
|
||||
@@ -962,7 +965,7 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">Label</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">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
|
||||
|
||||
@@ -976,7 +979,7 @@
|
||||
<span class="k">class</span> <span class="nc">MultipleInstr</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="n">JUMP_SIZE</span> <span class="o">=</span> <span class="mi">6</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">init_instrs</span><span class="o">=</span><span class="p">()):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">init_instrs</span><span class="o">=</span><span class="p">()):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">instrs</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">labels</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">expected_labels</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
@@ -1111,7 +1114,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_instruction</span><span class="p">(</span><span class="n">Label</span><span class="p">(</span><span class="n">label_name</span><span class="p">))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">add_instruction</span><span class="p">(</span><span class="n">instr</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__iadd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__iadd__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">other</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">MultipleInstr</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">merge_shellcode</span><span class="p">(</span><span class="n">other</span><span class="p">)</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">other</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
|
||||
@@ -1231,13 +1234,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+14
-11
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.pe_parse — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.pe_parse — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -42,8 +45,8 @@
|
||||
<span class="kn">import</span> <span class="nn">windows.hooks</span> <span class="k">as</span> <span class="nn">hooks</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.utils</span> <span class="k">as</span> <span class="nn">utils</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.utils</span> <span class="k">import</span> <span class="n">transform_ctypes_fields</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.utils</span> <span class="kn">import</span> <span class="n">transform_ctypes_fields</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.remotectypes</span> <span class="k">as</span> <span class="nn">rctypes</span>
|
||||
|
||||
<span class="n">IMAGE_ORDINAL_FLAG32</span> <span class="o">=</span> <span class="mh">0x80000000</span>
|
||||
@@ -151,7 +154,7 @@
|
||||
<span class="k">def</span> <span class="nf">size</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">VirtualSize</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<PESection </span><span class="se">\"</span><span class="si">{0}</span><span class="se">\"</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">name</span><span class="p">)</span>
|
||||
|
||||
|
||||
@@ -189,7 +192,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span>
|
||||
<span class="k">return</span> <span class="bp">self</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> "</span><span class="si">{1}</span><span class="s1">" ordinal </span><span class="si">{2}</span><span class="s1">>'</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="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ord</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="IATEntry.set_hook"><a class="viewcode-back" href="../../process.html#windows.pe_parse.IATEntry.set_hook">[docs]</a> <span class="k">def</span> <span class="nf">set_hook</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">types</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
@@ -333,7 +336,7 @@
|
||||
<div class="viewcode-block" id="PEFile"><a class="viewcode-back" href="../../process.html#windows.pe_parse.PEFile">[docs]</a><span class="k">class</span> <span class="nc">PEFile</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a PE loaded in a process (current or remote)"""</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">target</span><span class="p">,</span> <span class="n">baseaddr</span><span class="p">,</span> <span class="n">targetedbitness</span><span class="p">,</span> <span class="n">transformers</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">,</span> <span class="n">baseaddr</span><span class="p">,</span> <span class="n">targetedbitness</span><span class="p">,</span> <span class="n">transformers</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">baseaddr</span> <span class="o">=</span> <span class="n">baseaddr</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">bitness</span> <span class="o">=</span> <span class="n">targetedbitness</span>
|
||||
@@ -494,13 +497,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+17
-14
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.pipe — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.pipe — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -38,16 +41,16 @@
|
||||
|
||||
<h1>Source code for windows.pipe</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="k">import</span> <span class="n">is_py3</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">is_py3</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">is_py3</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">multiprocessing.connection</span> <span class="k">import</span> <span class="n">PipeConnection</span> <span class="k">as</span> <span class="n">native_PipeConnection</span>
|
||||
<span class="kn">from</span> <span class="nn">multiprocessing.connection</span> <span class="kn">import</span> <span class="n">PipeConnection</span> <span class="k">as</span> <span class="n">native_PipeConnection</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="kn">from</span> <span class="nn">_multiprocessing</span> <span class="k">import</span> <span class="n">PipeConnection</span> <span class="k">as</span> <span class="n">native_PipeConnection</span>
|
||||
<span class="kn">from</span> <span class="nn">_multiprocessing</span> <span class="kn">import</span> <span class="n">PipeConnection</span> <span class="k">as</span> <span class="n">native_PipeConnection</span>
|
||||
|
||||
<span class="c1"># Inspired from 'multiprocessing\connection.py'</span>
|
||||
|
||||
@@ -63,7 +66,7 @@
|
||||
<span class="sd">"""A wrapper arround :class:`_multiprocessing.PipeConnection` able to work as a ContextManager"""</span>
|
||||
<span class="n">BUFFER_SIZE</span> <span class="o">=</span> <span class="mh">0x2000</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">connection</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">server</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">connection</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">server</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">fileno</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">connection</span> <span class="o">=</span> <span class="n">connection</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
@@ -140,13 +143,13 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">connection</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="kc">None</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__exit__</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">def</span> <span class="fm">__exit__</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="bp">self</span><span class="o">.</span><span class="n">close</span><span class="p">()</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">def</span> <span class="fm">__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"> name="</span><span class="si">{1}</span><span class="s2">" server=</span><span class="si">{2}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">server</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -196,13 +199,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+23
-20
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.remotectypes — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.remotectypes — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -44,7 +47,7 @@
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">ctypes.wintypes</span>
|
||||
<span class="kn">import</span> <span class="nn">itertools</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="k">import</span> <span class="n">_SimpleCData</span>
|
||||
<span class="kn">from</span> <span class="nn">_ctypes</span> <span class="kn">import</span> <span class="n">_SimpleCData</span>
|
||||
|
||||
<span class="c1"># No PFW deps in this file</span>
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
@@ -199,7 +202,7 @@
|
||||
<span class="n">remote_pointed_type</span> <span class="o">=</span> <span class="n">RemoteStructure</span><span class="o">.</span><span class="n">from_structure</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">real_pointer_type</span><span class="o">.</span><span class="n">_type_</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">remote_pointed_type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">raw_value</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">)</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<RemoteStructurePointer to </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="bp">self</span><span class="o">.</span><span class="n">real_pointer_type</span><span class="o">.</span><span class="n">_type_</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span>
|
||||
|
||||
|
||||
@@ -209,11 +212,11 @@
|
||||
<span class="n">_length_</span> <span class="o">=</span> <span class="nb">len</span>
|
||||
<span class="n">_type_</span> <span class="o">=</span> <span class="n">subtype</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">addr</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_base_addr</span> <span class="o">=</span> <span class="n">addr</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">slice</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">slice</span><span class="p">):</span>
|
||||
<span class="c1"># import pdb;pdb.set_trace()</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="nb">slice</span><span class="p">,</span> <span class="n">int_types</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"RemoteArray slice __getitem__"</span><span class="p">)</span>
|
||||
@@ -238,7 +241,7 @@
|
||||
<span class="c1"># 64bits pointers</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">RemotePtr64</span><span class="p">(</span><span class="n">RemoteValue</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">value</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">RemotePtr64</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="n">value</span><span class="p">)</span>
|
||||
|
||||
@@ -259,12 +262,12 @@
|
||||
<span class="c1"># RemoteCCharP for the good `value` implem</span>
|
||||
<span class="c1"># c_char_p64 for the good _type_ (ctypes size)</span>
|
||||
<span class="k">class</span> <span class="nc">Remote_c_char_p64</span><span class="p">(</span><span class="n">c_char_p64</span><span class="p">,</span> <span class="n">RemotePtr64</span><span class="p">,</span> <span class="n">RemoteCCharP</span><span class="p">):</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<Remote_c_char_p64(</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="bp">self</span><span class="o">.</span><span class="n">raw_value</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">Remote_w_char_p64</span><span class="p">(</span><span class="n">c_wchar_p64</span><span class="p">,</span> <span class="n">RemotePtr64</span><span class="p">,</span> <span class="n">RemoteWCharP</span><span class="p">):</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<Remote_c_wchar_p64(</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="bp">self</span><span class="o">.</span><span class="n">raw_value</span><span class="p">)</span>
|
||||
|
||||
|
||||
@@ -296,7 +299,7 @@
|
||||
<span class="c1"># 32bits pointers</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">RemotePtr32</span><span class="p">(</span><span class="n">RemoteValue</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">value</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">value</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">RemotePtr32</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="n">value</span><span class="p">)</span>
|
||||
|
||||
@@ -317,12 +320,12 @@
|
||||
<span class="c1"># RemoteCCharP for the good `value` implem</span>
|
||||
<span class="c1"># c_char_p64 for the good _type_ (ctypes size)</span>
|
||||
<span class="k">class</span> <span class="nc">Remote_c_char_p32</span><span class="p">(</span><span class="n">c_char_p32</span><span class="p">,</span> <span class="n">RemotePtr32</span><span class="p">,</span> <span class="n">RemoteCCharP</span><span class="p">):</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<Remote_c_char_p32(</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="bp">self</span><span class="o">.</span><span class="n">raw_value</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">Remote_w_char_p32</span><span class="p">(</span><span class="n">c_wchar_p32</span><span class="p">,</span> <span class="n">RemotePtr32</span><span class="p">,</span> <span class="n">RemoteWCharP</span><span class="p">):</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<Remote_c_wchar_p32(</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="bp">self</span><span class="o">.</span><span class="n">raw_value</span><span class="p">)</span>
|
||||
|
||||
|
||||
@@ -383,7 +386,7 @@
|
||||
<span class="n">Remote_w_char_p32</span><span class="p">:</span> <span class="n">Remote_w_char_p32</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">base_addr</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">base_addr</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_target</span> <span class="o">=</span> <span class="n">target</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_base_addr</span> <span class="o">=</span> <span class="n">base_addr</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_fields_dict_</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_fields_</span><span class="p">)</span>
|
||||
@@ -430,7 +433,7 @@
|
||||
<span class="k">return</span> <span class="n">ftype</span><span class="o">.</span><span class="n">from_buffer</span><span class="p">(</span><span class="nb">bytearray</span><span class="p">(</span><span class="n">s</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">ftype</span><span class="o">.</span><span class="n">from_buffer</span><span class="p">(</span><span class="nb">bytearray</span><span class="p">(</span><span class="n">s</span><span class="p">))</span><span class="o">.</span><span class="n">value</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getattribute__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__getattribute__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">fieldname</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">fieldname</span> <span class="ow">in</span> <span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">_reserved_name</span><span class="p">:</span> <span class="c1"># Prevent recursion !</span>
|
||||
<span class="k">return</span> <span class="nb">super</span><span class="p">(</span><span class="n">RemoteStructureUnion</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__getattribute__</span><span class="p">(</span><span class="n">fieldname</span><span class="p">)</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
@@ -479,7 +482,7 @@
|
||||
<span class="k">def</span> <span class="nf">contents</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">RemoteStructurePointer64</span><span class="o">.</span><span class="n">from_buffer_with_target_and_ptr_type</span><span class="p">(</span><span class="nb">bytearray</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> <span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="n">ptr_type</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">contents</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<RemotePtr64 to struct </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="nb">type</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">PointerToStruct64</span>
|
||||
|
||||
@@ -523,7 +526,7 @@
|
||||
<span class="k">def</span> <span class="nf">contents</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">RemoteStructurePointer32</span><span class="o">.</span><span class="n">from_buffer_with_target_and_ptr_type</span><span class="p">(</span><span class="nb">bytearray</span><span class="p">(</span><span class="bp">self</span><span class="p">),</span> <span class="n">target</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">target</span><span class="p">,</span> <span class="n">ptr_type</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="n">contents</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<RemotePtr32 to struct </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="nb">type</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">PointerToStruct32</span>
|
||||
@@ -594,13 +597,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+11
-8
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.rpc.client — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.rpc.client — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -102,8 +105,8 @@
|
||||
<div class="viewcode-block" id="RPCClient"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.RPCClient">[docs]</a><span class="k">class</span> <span class="nc">RPCClient</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""A client for RPC-over-ALPC able to bind to interface and perform calls using NDR32 marshalling"""</span>
|
||||
<span class="n">REQUEST_IDENTIFIER</span> <span class="o">=</span> <span class="mh">0x11223344</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">port</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">alpc_client</span> <span class="o">=</span> <span class="n">alpc</span><span class="o">.</span><span class="n">AlpcClient</span><span class="p">(</span><span class="n">port</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">port</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">alpc_client</span> <span class="o">=</span> <span class="n">alpc</span><span class="o">.</span><span class="n">AlpcClient</span><span class="p">(</span><span class="n">port</span><span class="p">)</span> <span class="c1">#: The :class:`windows.alpc.AlpcClient` used to communicate with the server</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">number_of_bind_if</span> <span class="o">=</span> <span class="mi">0</span> <span class="c1"># if -> interface</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">if_bind_number</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
@@ -249,13 +252,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+13
-10
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.rpc.epmapper — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.rpc.epmapper — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -38,13 +41,13 @@
|
||||
|
||||
<h1>Source code for windows.rpc.epmapper</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">struct</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.rpc</span> <span class="k">import</span> <span class="n">ndr</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="k">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="k">import</span> <span class="n">basestring</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.rpc</span> <span class="kn">import</span> <span class="n">ndr</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="kn">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span>
|
||||
|
||||
|
||||
|
||||
@@ -268,13 +271,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+146
-30
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.rpc.ndr — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.rpc.ndr — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -68,7 +71,7 @@
|
||||
|
||||
<div class="viewcode-block" id="NdrUniquePTR"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrUniquePTR">[docs]</a><span class="k">class</span> <span class="nc">NdrUniquePTR</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Create a UNIQUE PTR around a given Ndr type"""</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">subcls</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subcls</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">subcls</span> <span class="o">=</span> <span class="n">subcls</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">pack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
@@ -101,7 +104,12 @@
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<I"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">data</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">subcls</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">stream</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">subcls</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="n">stream</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># 14.3.2 Alignment of Constructed Types</span>
|
||||
<span class="c1"># Pointer alignment is always modulo 4.</span>
|
||||
<span class="k">return</span> <span class="mi">4</span></div>
|
||||
|
||||
<span class="k">class</span> <span class="nc">NdrUnpackNone</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="nd">@classmethod</span>
|
||||
@@ -110,7 +118,7 @@
|
||||
|
||||
<span class="k">class</span> <span class="nc">NdrRef</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="c1"># TESTING</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">subcls</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subcls</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">subcls</span> <span class="o">=</span> <span class="n">subcls</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
|
||||
@@ -120,7 +128,7 @@
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">subcls</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">stream</span><span class="p">)</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">NdrFixedArray</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">subcls</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">subcls</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">subcls</span> <span class="o">=</span> <span class="n">subcls</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">size</span>
|
||||
|
||||
@@ -133,6 +141,9 @@
|
||||
<span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">subcls</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">stream</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">)]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">subcls</span><span class="o">.</span><span class="n">get_alignment</span><span class="p">()</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NdrSID"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrSID">[docs]</a><span class="k">class</span> <span class="nc">NdrSID</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="NdrSID.pack"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrSID.pack">[docs]</a> <span class="nd">@classmethod</span>
|
||||
@@ -150,7 +161,12 @@
|
||||
<span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
|
||||
<span class="sd">"""Unpack a PSID, partial implementation that returns a :class:`str` and not a PSID"""</span>
|
||||
<span class="n">subcount</span> <span class="o">=</span> <span class="n">NdrLong</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">stream</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">+</span> <span class="p">(</span><span class="n">subcount</span> <span class="o">*</span> <span class="mi">4</span><span class="p">))</span></div></div>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="mi">8</span> <span class="o">+</span> <span class="p">(</span><span class="n">subcount</span> <span class="o">*</span> <span class="mi">4</span><span class="p">))</span></div>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Not sur, but it seems to contain an array of long</span>
|
||||
<span class="k">return</span> <span class="mi">4</span></div>
|
||||
|
||||
<span class="k">class</span> <span class="nc">NdrVaryingCString</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="nd">@classmethod</span>
|
||||
@@ -165,6 +181,11 @@
|
||||
<span class="n">result</span> <span class="o">+=</span> <span class="n">data</span>
|
||||
<span class="k">return</span> <span class="n">dword_pad</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Not sur, but size is on 4 bytes so...</span>
|
||||
<span class="k">return</span> <span class="mi">4</span>
|
||||
|
||||
<div class="viewcode-block" id="NdrWString"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrWString">[docs]</a><span class="k">class</span> <span class="nc">NdrWString</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="NdrWString.pack"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrWString.pack">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">pack</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
@@ -186,7 +207,12 @@
|
||||
<span class="k">assert</span> <span class="n">size1</span> <span class="o">==</span> <span class="n">size2</span>
|
||||
<span class="k">assert</span> <span class="n">zero</span> <span class="o">==</span> <span class="mi">0</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="n">stream</span><span class="o">.</span><span class="n">read</span><span class="p">(</span><span class="n">size1</span> <span class="o">*</span> <span class="mi">2</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">s</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-16-le"</span><span class="p">)</span></div>
|
||||
<span class="k">return</span> <span class="n">s</span><span class="o">.</span><span class="n">decode</span><span class="p">(</span><span class="s2">"utf-16-le"</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Not sur, but size is on 4 bytes so...</span>
|
||||
<span class="k">return</span> <span class="mi">4</span></div>
|
||||
|
||||
<div class="viewcode-block" id="NdrCString"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrCString">[docs]</a><span class="k">class</span> <span class="nc">NdrCString</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="NdrCString.pack"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrCString.pack">[docs]</a> <span class="nd">@classmethod</span>
|
||||
@@ -199,7 +225,12 @@
|
||||
<span class="n">l</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="n">struct</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="s2">"<3I"</span><span class="p">,</span> <span class="n">l</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">l</span><span class="p">)</span>
|
||||
<span class="n">result</span> <span class="o">+=</span> <span class="n">data</span>
|
||||
<span class="k">return</span> <span class="n">dword_pad</span><span class="p">(</span><span class="n">result</span><span class="p">)</span></div></div>
|
||||
<span class="k">return</span> <span class="n">dword_pad</span><span class="p">(</span><span class="n">result</span><span class="p">)</span></div>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Not sur, but size is on 4 bytes so...</span>
|
||||
<span class="k">return</span> <span class="mi">4</span></div>
|
||||
|
||||
<span class="c1"># @classmethod</span>
|
||||
<span class="c1"># def unpack(self, stream):</span>
|
||||
@@ -217,7 +248,11 @@
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
|
||||
<span class="n">stream</span><span class="o">.</span><span class="n">align</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<I"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<I"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="mi">4</span></div>
|
||||
|
||||
<div class="viewcode-block" id="NdrHyper"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrHyper">[docs]</a><span class="k">class</span> <span class="nc">NdrHyper</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="nd">@classmethod</span>
|
||||
@@ -227,7 +262,11 @@
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
|
||||
<span class="n">stream</span><span class="o">.</span><span class="n">align</span><span class="p">(</span><span class="mi">8</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<Q"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<Q"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="mi">8</span></div>
|
||||
|
||||
<div class="viewcode-block" id="NdrShort"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrShort">[docs]</a><span class="k">class</span> <span class="nc">NdrShort</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="nd">@classmethod</span>
|
||||
@@ -236,7 +275,11 @@
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<H"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<H"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="mi">2</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NdrByte"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrByte">[docs]</a><span class="k">class</span> <span class="nc">NdrByte</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
@@ -246,7 +289,11 @@
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<B"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span></div>
|
||||
<span class="k">return</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<B"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="mi">1</span></div>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">NdrGuid</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
@@ -261,6 +308,11 @@
|
||||
<span class="n">rawguid</span> <span class="o">=</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"16s"</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IID</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">rawguid</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="mi">1</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">NdrContextHandle</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">pack</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
@@ -273,6 +325,11 @@
|
||||
<span class="n">attributes</span><span class="p">,</span> <span class="n">rawguid</span> <span class="o">=</span> <span class="n">stream</span><span class="o">.</span><span class="n">partial_unpack</span><span class="p">(</span><span class="s2">"<I16s"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IID</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">rawguid</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="mi">4</span>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NdrStructure"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrStructure">[docs]</a><span class="k">class</span> <span class="nc">NdrStructure</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""a NDR structure that tries to respect the rules of pointer packing, this class should be subclassed with</span>
|
||||
@@ -290,21 +347,38 @@
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"NdrStructure packing number elements mismatch: structure has <</span><span class="si">{0}</span><span class="s2">> members got <</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="nb">len</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">MEMBERS</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)))</span>
|
||||
<span class="n">conformant_size</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">res_size</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="n">pointed</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="n">outstream</span> <span class="o">=</span> <span class="n">NdrWriteStream</span><span class="p">()</span>
|
||||
<span class="n">pointed_to_pack</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="c1"># pointedoutstream = NdrWriteStream()</span>
|
||||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="p">(</span><span class="n">member</span><span class="p">,</span> <span class="n">memberdata</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="nb">zip</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">MEMBERS</span><span class="p">,</span> <span class="n">data</span><span class="p">)):</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">member</span><span class="p">,</span> <span class="s2">"pack_in_struct"</span><span class="p">):</span>
|
||||
<span class="n">x</span><span class="p">,</span> <span class="n">y</span> <span class="o">=</span> <span class="n">member</span><span class="o">.</span><span class="n">pack_in_struct</span><span class="p">(</span><span class="n">memberdata</span><span class="p">,</span> <span class="n">i</span><span class="p">)</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="mi">4</span><span class="p">,</span> <span class="s2">"Pointer should be size 4"</span>
|
||||
<span class="c1"># Write the pointer</span>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">align</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">y</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">pointed</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
||||
<span class="c1"># Store the info to the pointed to pack</span>
|
||||
<span class="n">pointed_to_pack</span><span class="o">.</span><span class="n">append</span><span class="p">((</span><span class="n">member</span><span class="o">.</span><span class="n">subcls</span><span class="o">.</span><span class="n">get_alignment</span><span class="p">(),</span> <span class="n">y</span><span class="p">))</span>
|
||||
<span class="c1"># pointedoutstream.write(y)</span>
|
||||
<span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">member</span><span class="p">,</span> <span class="s2">"pack_conformant"</span><span class="p">):</span>
|
||||
<span class="n">size</span><span class="p">,</span> <span class="n">data</span> <span class="o">=</span> <span class="n">member</span><span class="o">.</span><span class="n">pack_conformant</span><span class="p">(</span><span class="n">memberdata</span><span class="p">)</span>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">align</span><span class="p">(</span><span class="n">member</span><span class="o">.</span><span class="n">get_alignment</span><span class="p">())</span>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="n">conformant_size</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">size</span><span class="p">)</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="c1"># res.append(data)</span>
|
||||
<span class="c1"># res_size += len(data)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">packed_member</span> <span class="o">=</span> <span class="n">member</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">memberdata</span><span class="p">)</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">packed_member</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">dword_pad</span><span class="p">(</span><span class="sa">b</span><span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">conformant_size</span><span class="p">))</span> <span class="o">+</span> <span class="n">dword_pad</span><span class="p">(</span><span class="sa">b</span><span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">res</span><span class="p">))</span> <span class="o">+</span> <span class="n">dword_pad</span><span class="p">(</span><span class="sa">b</span><span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">pointed</span><span class="p">))</span></div>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">align</span><span class="p">(</span><span class="n">member</span><span class="o">.</span><span class="n">get_alignment</span><span class="p">())</span>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">packed_member</span><span class="p">)</span>
|
||||
<span class="c1"># Pack the pointed to the stream</span>
|
||||
<span class="k">for</span> <span class="n">alignement</span><span class="p">,</span> <span class="n">pointed_data</span> <span class="ow">in</span> <span class="n">pointed_to_pack</span><span class="p">:</span>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">align</span><span class="p">(</span><span class="n">alignement</span><span class="p">)</span>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">pointed_data</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">dword_pad</span><span class="p">(</span><span class="sa">b</span><span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">conformant_size</span><span class="p">))</span> <span class="o">+</span> <span class="n">outstream</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span></div>
|
||||
|
||||
<div class="viewcode-block" id="NdrStructure.unpack"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrStructure.unpack">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
|
||||
@@ -342,7 +416,11 @@
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">post_unpack</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">data</span></div>
|
||||
<span class="k">return</span> <span class="n">data</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">max</span><span class="p">([</span><span class="n">x</span><span class="o">.</span><span class="n">get_alignment</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">MEMBERS</span><span class="p">])</span></div>
|
||||
|
||||
|
||||
|
||||
@@ -359,11 +437,17 @@
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">" * data </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">data</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">" * members = </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="bp">cls</span><span class="o">.</span><span class="n">MEMBERS</span><span class="p">))</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"NdrParameters packing number elements mismatch: structure has <</span><span class="si">{0}</span><span class="s2">> members got <</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="nb">len</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">MEMBERS</span><span class="p">),</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)))</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
||||
|
||||
<span class="n">outstream</span> <span class="o">=</span> <span class="n">NdrWriteStream</span><span class="p">()</span>
|
||||
<span class="k">for</span> <span class="p">(</span><span class="n">member</span><span class="p">,</span> <span class="n">memberdata</span><span class="p">)</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="bp">cls</span><span class="o">.</span><span class="n">MEMBERS</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="n">alignment</span> <span class="o">=</span> <span class="n">member</span><span class="o">.</span><span class="n">get_alignment</span><span class="p">()</span>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">align</span><span class="p">(</span><span class="n">alignment</span><span class="p">)</span>
|
||||
<span class="n">packed_member</span> <span class="o">=</span> <span class="n">member</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="n">memberdata</span><span class="p">)</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">packed_member</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="sa">b</span><span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">dword_pad</span><span class="p">(</span><span class="n">elt</span><span class="p">)</span> <span class="k">for</span> <span class="n">elt</span> <span class="ow">in</span> <span class="n">res</span><span class="p">)</span>
|
||||
<span class="n">outstream</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">packed_member</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">outstream</span><span class="o">.</span><span class="n">get_data</span><span class="p">()</span>
|
||||
|
||||
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">unpack</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">stream</span><span class="p">):</span>
|
||||
@@ -371,7 +455,10 @@
|
||||
<span class="k">for</span> <span class="n">member</span> <span class="ow">in</span> <span class="bp">cls</span><span class="o">.</span><span class="n">MEMBERS</span><span class="p">:</span>
|
||||
<span class="n">unpacked_member</span> <span class="o">=</span> <span class="n">member</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">stream</span><span class="p">)</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">unpacked_member</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span></div>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"NdrParameters should always be top type in NDR description"</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NdrConformantArray"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrConformantArray">[docs]</a><span class="k">class</span> <span class="nc">NdrConformantArray</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
@@ -401,7 +488,12 @@
|
||||
<span class="k">def</span> <span class="nf">unpack_conformant</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">stream</span><span class="p">,</span> <span class="n">size</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="p">[</span><span class="bp">cls</span><span class="o">.</span><span class="n">MEMBER_TYPE</span><span class="o">.</span><span class="n">unpack</span><span class="p">(</span><span class="n">stream</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">size</span><span class="p">)]</span>
|
||||
<span class="n">stream</span><span class="o">.</span><span class="n">align</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span></div>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># TODO: test on array of Hyper</span>
|
||||
<span class="k">return</span> <span class="nb">max</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">MEMBER_TYPE</span><span class="o">.</span><span class="n">get_alignment</span><span class="p">())</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="NdrConformantVaryingArrays"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrConformantVaryingArrays">[docs]</a><span class="k">class</span> <span class="nc">NdrConformantVaryingArrays</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
@@ -443,8 +535,11 @@
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">_post_unpack</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">result</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">result</span></div>
|
||||
<span class="k">return</span> <span class="n">result</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_alignment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># TODO: test on array of Hyper</span>
|
||||
<span class="k">return</span> <span class="nb">max</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">MEMBER_TYPE</span><span class="o">.</span><span class="n">get_alignment</span><span class="p">())</span></div>
|
||||
|
||||
<span class="k">class</span> <span class="nc">NdrWcharConformantVaryingArrays</span><span class="p">(</span><span class="n">NdrConformantVaryingArrays</span><span class="p">):</span>
|
||||
<span class="n">MEMBER_TYPE</span> <span class="o">=</span> <span class="n">NdrShort</span>
|
||||
@@ -488,7 +583,7 @@
|
||||
|
||||
<div class="viewcode-block" id="NdrStream"><a class="viewcode-back" href="../../../rpc.html#windows.rpc.ndr.NdrStream">[docs]</a><span class="k">class</span> <span class="nc">NdrStream</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""A stream of bytes used for NDR unpacking"""</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">data</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">fulldata</span> <span class="o">=</span> <span class="n">data</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">data</span>
|
||||
|
||||
@@ -526,6 +621,27 @@
|
||||
<span class="c1"># print("align {0}: 0".format(size))</span>
|
||||
<span class="k">return</span> <span class="mi">0</span></div></div>
|
||||
|
||||
<span class="k">class</span> <span class="nc">NdrWriteStream</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data_parts</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data_size</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">data</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">""</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data_parts</span><span class="p">)</span>
|
||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_size</span>
|
||||
<span class="k">return</span> <span class="n">data</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">write</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">data</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data_parts</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">data_size</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">align</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">alignement</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">data_size</span> <span class="o">%</span> <span class="n">alignement</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">topadsize</span> <span class="o">=</span> <span class="p">(</span><span class="n">alignement</span><span class="p">)</span> <span class="o">-</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">data_size</span> <span class="o">%</span> <span class="n">alignement</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="sa">b</span><span class="s2">"P"</span> <span class="o">*</span> <span class="n">topadsize</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">make_parameters</span><span class="p">(</span><span class="n">types</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">class</span> <span class="nc">NdrCustomParameters</span><span class="p">(</span><span class="n">NdrParameters</span><span class="p">):</span>
|
||||
@@ -568,13 +684,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+33
-18
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.security — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.security — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -42,9 +45,10 @@
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject.token</span> <span class="k">import</span> <span class="n">Token</span><span class="p">,</span> <span class="n">KNOW_INTEGRITY_LEVEL</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject.token</span> <span class="kn">import</span> <span class="n">Token</span><span class="p">,</span> <span class="n">KNOW_INTEGRITY_LEVEL</span>
|
||||
|
||||
|
||||
<span class="c1"># Specific access right</span>
|
||||
@@ -354,7 +358,7 @@
|
||||
<span class="n">subcls</span> <span class="o">=</span> <span class="n">ACE_CLASS_BY_ACE_TYPE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">AceType</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_to_ace_type</span><span class="p">(</span><span class="n">subcls</span><span class="p">)</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">def</span> <span class="fm">__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"> type=</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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">AceType</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -405,7 +409,7 @@
|
||||
<span class="k">if</span> <span class="n">v</span><span class="p">:</span>
|
||||
<span class="k">yield</span> <span class="n">ACE_MASKS</span><span class="p">[</span><span class="n">v</span><span class="p">]</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">def</span> <span class="fm">__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"> mask=</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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Mask</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -674,11 +678,11 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="Acl.__len__"><a class="viewcode-back" href="../../security.html#windows.security.Acl.__len__">[docs]</a> <span class="k">def</span> <span class="nf">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Acl.__len__"><a class="viewcode-back" href="../../security.html#windows.security.Acl.__len__">[docs]</a> <span class="k">def</span> <span class="fm">__len__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The number of ``ACE`` in the :class:`Acl`"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">AceCount</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Acl.__getitem__"><a class="viewcode-back" href="../../security.html#windows.security.Acl.__getitem__">[docs]</a> <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Acl.__getitem__"><a class="viewcode-back" href="../../security.html#windows.security.Acl.__getitem__">[docs]</a> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">i</span><span class="p">):</span>
|
||||
<span class="sd">"""Return ``ACE`` nb ``i``</span>
|
||||
|
||||
<span class="sd"> :return: :class:`Ace`</span>
|
||||
@@ -690,14 +694,14 @@
|
||||
<span class="k">raise</span> <span class="ne">IndexError</span><span class="p">(</span><span class="s2">"Invalid ACL index </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">i</span><span class="p">))</span>
|
||||
<span class="k">raise</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Acl.__iter__"><a class="viewcode-back" href="../../security.html#windows.security.Acl.__iter__">[docs]</a> <span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Acl.__iter__"><a class="viewcode-back" href="../../security.html#windows.security.Acl.__iter__">[docs]</a> <span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Return an iterable over all the ``ACE`` in the :class:`Acl`</span>
|
||||
|
||||
<span class="sd"> :yield: :class:`Ace`"""</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">AceCount</span><span class="p">):</span>
|
||||
<span class="k">yield</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_ace</span><span class="p">(</span><span class="n">i</span><span class="p">)</span></div>
|
||||
|
||||
<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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<Acl count=</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="bp">self</span><span class="o">.</span><span class="n">AceCount</span><span class="p">)</span></div>
|
||||
|
||||
<span class="n">PAcl</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">Acl</span><span class="p">)</span>
|
||||
@@ -816,7 +820,7 @@
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">sacl</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The SACL of the security descriptor. You may need special attention to retrieve it (see :any:`DEFAULT_SECURITY_INFORMATION`)</span>
|
||||
<span class="sd">"""The SACL of the security descriptor. You may need special attention to retrieve it (see :class:`DEFAULT_SECURITY_INFORMATION`)</span>
|
||||
|
||||
<span class="sd"> :type: :class:`Acl` or ``None`` if the SACL was ``NULL`` or not present</span>
|
||||
<span class="sd"> """</span>
|
||||
@@ -928,6 +932,17 @@
|
||||
<span class="n">flags</span> <span class="o">|=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SACL_SECURITY_INFORMATION</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">SetNamedSecurityInfoW</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SE_FILE_OBJECT</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">group</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dacl</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sacl</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">to_handle</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="n">flags</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">flags</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span><span class="p">:</span>
|
||||
<span class="n">flags</span> <span class="o">|=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">OWNER_SECURITY_INFORMATION</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">group</span><span class="p">:</span>
|
||||
<span class="n">flags</span> <span class="o">|=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">GROUP_SECURITY_INFORMATION</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dacl</span><span class="p">:</span>
|
||||
<span class="n">flags</span> <span class="o">|=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DACL_SECURITY_INFORMATION</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sacl</span><span class="p">:</span>
|
||||
<span class="n">flags</span> <span class="o">|=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SACL_SECURITY_INFORMATION</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_apply_to_handle_and_type</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SE_FILE_OBJECT</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="SecurityDescriptor.from_service"><a class="viewcode-back" href="../../security.html#windows.security.SecurityDescriptor.from_service">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">from_service</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">filename</span><span class="p">,</span> <span class="n">query_sacl</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">SERVICE_SECURITY_INFORMATION</span><span class="p">):</span>
|
||||
@@ -1016,11 +1031,11 @@
|
||||
<span class="k">def</span> <span class="nf">explain_simple_ace</span><span class="p">(</span><span class="n">ace</span><span class="p">,</span> <span class="n">sdtype</span><span class="p">):</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">"Type:"</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">ace</span><span class="o">.</span><span class="n">Header</span><span class="o">.</span><span class="n">AceType</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">"Flags:"</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">" </span><span class="si">{0:#x}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">ace</span><span class="o">.</span><span class="n">Header</span><span class="o">.</span><span class="n">AceFlags</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">"Flags: </span><span class="si">{0:#x}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">ace</span><span class="o">.</span><span class="n">Header</span><span class="o">.</span><span class="n">AceFlags</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">" </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">ace</span><span class="o">.</span><span class="n">Header</span><span class="o">.</span><span class="n">flags</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">"SID:"</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">" "</span> <span class="o">+</span> <span class="n">explain_sid</span><span class="p">(</span><span class="n">ace</span><span class="o">.</span><span class="n">sid</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">"Mask:"</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">"Mask: </span><span class="si">{0:#x}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">ace</span><span class="o">.</span><span class="n">Mask</span><span class="p">)</span>
|
||||
<span class="n">mapper</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">security</span><span class="o">.</span><span class="n">SPECIFIC_ACCESS_RIGTH_BY_TYPE</span><span class="p">[</span><span class="n">sdtype</span><span class="p">]</span>
|
||||
<span class="k">yield</span> <span class="sa">u</span><span class="s2">" "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="n">mapper</span><span class="p">[</span><span class="n">x</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">ace</span><span class="o">.</span><span class="n">mask</span><span class="p">))</span>
|
||||
|
||||
@@ -1154,13 +1169,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+18
-15
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.syswow64 — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.syswow64 — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -39,18 +42,18 @@
|
||||
<h1>Source code for windows.syswow64</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">struct</span>
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="k">import</span> <span class="n">byref</span>
|
||||
<span class="kn">from</span> <span class="nn">ctypes</span> <span class="kn">import</span> <span class="n">byref</span>
|
||||
<span class="kn">import</span> <span class="nn">codecs</span>
|
||||
<span class="kn">import</span> <span class="nn">functools</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.native_exec.simple_x86</span> <span class="k">as</span> <span class="nn">x86</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.native_exec.simple_x64</span> <span class="k">as</span> <span class="nn">x64</span>
|
||||
<span class="kn">from</span> <span class="nn">.generated_def.winstructs</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">process</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">.winproxy</span> <span class="k">import</span> <span class="n">NeededParameter</span>
|
||||
<span class="kn">from</span> <span class="nn">.pycompat</span> <span class="k">import</span> <span class="n">int_types</span>
|
||||
<span class="kn">from</span> <span class="nn">.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">process</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">.winproxy</span> <span class="kn">import</span> <span class="n">NeededParameter</span>
|
||||
<span class="kn">from</span> <span class="nn">.pycompat</span> <span class="kn">import</span> <span class="n">int_types</span>
|
||||
|
||||
<span class="c1"># Special code for syswow64 process</span>
|
||||
<span class="n">CS_32bits</span> <span class="o">=</span> <span class="mh">0x23</span>
|
||||
@@ -207,7 +210,7 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">ReadSyswow64Process</span><span class="p">(</span><span class="n">process</span><span class="o">.</span><span class="n">Process</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">target</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">target</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">target</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_bitness</span> <span class="o">=</span> <span class="n">target</span><span class="o">.</span><span class="n">bitness</span>
|
||||
|
||||
@@ -238,7 +241,7 @@
|
||||
|
||||
<div class="viewcode-block" id="Syswow64ApiProxy"><a class="viewcode-back" href="../../internals.html#windows.syswow64.Syswow64ApiProxy">[docs]</a><span class="k">class</span> <span class="nc">Syswow64ApiProxy</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Create a python wrapper around a 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">winproxy_function</span><span class="p">,</span> <span class="n">errcheck</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">winproxy_function</span><span class="p">,</span> <span class="n">errcheck</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">winproxy_function</span> <span class="o">=</span> <span class="n">winproxy_function</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">raw_call</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">errcheck</span> <span class="o">=</span> <span class="n">errcheck</span>
|
||||
@@ -248,7 +251,7 @@
|
||||
|
||||
|
||||
|
||||
<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="k">def</span> <span class="fm">__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="k">if</span> <span class="ow">not</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="bp">self</span><span class="o">.</span><span class="n">winproxy_function</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
@@ -390,13 +393,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+13
-9
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.utils.pythonutils — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.utils.pythonutils — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -43,8 +46,9 @@
|
||||
<span class="kn">import</span> <span class="nn">_ctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="k">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="kn">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span>
|
||||
|
||||
|
||||
|
||||
@@ -145,7 +149,7 @@
|
||||
<span class="sd">"""Wait for the object"""</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">WaitForSingleObject</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">timeout</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># sys.path is not None -> check if python shutdown</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">sys</span><span class="p">,</span> <span class="s2">"path"</span><span class="p">)</span> <span class="ow">and</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="ow">and</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_handle"</span><span class="p">)</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">_handle</span><span class="p">:</span>
|
||||
<span class="c1"># Prevent some bug where dbgprint might be None when __del__ is called in a closing process</span>
|
||||
@@ -183,13 +187,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+24
-21
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.utils.winutils — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.utils.winutils — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -45,14 +48,14 @@
|
||||
<span class="kn">import</span> <span class="nn">math</span>
|
||||
<span class="kn">import</span> <span class="nn">datetime</span>
|
||||
<span class="kn">import</span> <span class="nn">warnings</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="k">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="kn">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">..</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">..generated_def.winstructs</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">..</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">..generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
|
||||
<span class="c1"># Function resolution !</span>
|
||||
@@ -339,12 +342,12 @@
|
||||
<span class="k">def</span> <span class="nf">all</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">while</span> <span class="bp">self</span><span class="p">:</span>
|
||||
<span class="k">yield</span> <span class="bp">self</span>
|
||||
<span class="bp">self</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">next</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">"<ADS name='</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="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
|
||||
@@ -424,12 +427,12 @@
|
||||
<span class="k">return</span> <span class="n">new</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">while</span> <span class="bp">self</span><span class="p">:</span>
|
||||
<span class="k">yield</span> <span class="bp">self</span>
|
||||
<span class="bp">self</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">next</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> name="</span><span class="si">{1}</span><span class="s1">">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
|
||||
@@ -600,19 +603,19 @@
|
||||
<span class="sd"> with utils.VirtualProtected(IATentry.addr, ctypes.sizeof(PVOID), gdef.PAGE_EXECUTE_READWRITE):</span>
|
||||
<span class="sd"> IATentry.value = 0x42424242</span>
|
||||
<span class="sd"> """</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">addr</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">new_protect</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">addr</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">new_protect</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="p">(</span><span class="n">addr</span> <span class="o">%</span> <span class="mh">0x1000</span><span class="p">):</span>
|
||||
<span class="n">addr</span> <span class="o">=</span> <span class="n">addr</span> <span class="o">-</span> <span class="n">addr</span> <span class="o">%</span> <span class="mh">0x1000</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">addr</span> <span class="o">=</span> <span class="n">addr</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">size</span> <span class="o">=</span> <span class="n">size</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">new_protect</span> <span class="o">=</span> <span class="n">new_protect</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">old_protect</span> <span class="o">=</span> <span class="n">DWORD</span><span class="p">()</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualProtect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addr</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">new_protect</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">old_protect</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">):</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">VirtualProtect</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">addr</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">old_protect</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">old_protect</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="kc">False</span></div>
|
||||
|
||||
@@ -626,15 +629,15 @@
|
||||
<span class="sd"> with windows.utils.DisableWow64FsRedirection():</span>
|
||||
<span class="sd"> return windows.utils.create_process(r"C:\Windows\system32\calc.exe", True)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="nf">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span> <span class="ow">or</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">OldValue</span> <span class="o">=</span> <span class="n">PVOID</span><span class="p">()</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">Wow64DisableWow64FsRedirection</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OldValue</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span><span class="p">:</span>
|
||||
<span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">64</span> <span class="ow">or</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">bitness</span> <span class="o">==</span> <span class="mi">32</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">Wow64RevertWow64FsRedirection</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">OldValue</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">False</span></div>
|
||||
@@ -670,13 +673,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+11
-8
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.apisetmap — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.apisetmap — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -42,7 +45,7 @@
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_api_set_map_for_current_process</span><span class="p">(</span><span class="n">base</span><span class="p">):</span>
|
||||
@@ -59,7 +62,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">version</span> <span class="o">=</span> <span class="kc">None</span> <span class="c1">#: The version of the ApiSetMap</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">base</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">base</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">base</span> <span class="o">=</span> <span class="n">base</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">target</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span>
|
||||
|
||||
@@ -250,13 +253,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,599 @@
|
||||
|
||||
<!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.winobject.device_manager — PythonForWindows 0.6 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" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.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.6 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.winobject.device_manager</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">itertools</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.security</span> <span class="kn">import</span> <span class="n">SecurityDescriptor</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.utils</span> <span class="kn">import</span> <span class="n">fixedproperty</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="DeviceManager"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.DeviceManager">[docs]</a><span class="k">class</span> <span class="nc">DeviceManager</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent the device manager"""</span>
|
||||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">classes</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The list of installed device classes.</span>
|
||||
|
||||
<span class="sd"> :return: [:class:`DeviceClass`] -- A list of :class:`DeviceClass`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_classes_generator</span><span class="p">())</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_classes_generator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="n">itertools</span><span class="o">.</span><span class="n">count</span><span class="p">():</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">yield</span> <span class="bp">self</span><span class="o">.</span><span class="n">_enumerate_classes</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CR_NO_SUCH_VALUE</span><span class="p">:</span>
|
||||
<span class="k">break</span>
|
||||
<span class="c1"># Some index values might represent list entries containing invalid class data,</span>
|
||||
<span class="c1"># in which case the function returns CR_INVALID_DATA.</span>
|
||||
<span class="c1"># This return value can be ignored.</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CR_INVALID_DATA</span><span class="p">:</span>
|
||||
<span class="k">continue</span>
|
||||
<span class="k">raise</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_enumerate_classes</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">DeviceClass</span><span class="p">()</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">CM_Enumerate_Classes</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">res</span><span class="p">,</span> <span class="n">flags</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="DeviceClass"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.DeviceClass">[docs]</a><span class="k">class</span> <span class="nc">DeviceClass</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">GUID</span><span class="p">):</span>
|
||||
<span class="sd">"""A Device class, which is mainly a :class:`GUID` with additional attributes"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Bypass GUID __init__ that is not revelant here</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="nd">@fixedproperty</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The name of the device class"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_device_class_name</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">devices</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The set of devices of the current class.</span>
|
||||
|
||||
<span class="sd"> :type: :class:`DeviceInformationSet`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">enumerate_devices</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">enumerate_devices</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="n">handle</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">SetupDiGetClassDevsA</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">Flags</span><span class="o">=</span><span class="n">flags</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">DeviceInformationSet</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_device_class_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">MAX_CLASS_NAME_LEN</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">SetupDiClassNameFromGuidA</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">name</span><span class="o">.</span><span class="n">value</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">guid_cls</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">to_string</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="s2">"""<</span><span class="si">{0}</span><span class="s2"> name="</span><span class="si">{1}</span><span class="s2">" guid=</span><span class="si">{2}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">guid_cls</span><span class="p">)</span>
|
||||
|
||||
<span class="fm">__str__</span> <span class="o">=</span> <span class="fm">__repr__</span> <span class="c1"># Overwrite default GUID str</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DeviceInformationSet"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.DeviceInformationSet">[docs]</a><span class="k">class</span> <span class="nc">DeviceInformationSet</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">HDEVINFO</span><span class="p">):</span>
|
||||
<span class="sd">"""A device instances, can be itered to retrieve the underliyings :class:`DeviceInstance`"""</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">all_device_infos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">for</span> <span class="n">index</span> <span class="ow">in</span> <span class="n">itertools</span><span class="o">.</span><span class="n">count</span><span class="p">():</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">yield</span> <span class="bp">self</span><span class="o">.</span><span class="n">enum_device_info</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_NO_MORE_ITEMS</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">raise</span>
|
||||
|
||||
<span class="fm">__iter__</span> <span class="o">=</span> <span class="n">all_device_infos</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">enum_device_info</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">DeviceInstance</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">cbSize</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">res</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">SetupDiEnumDeviceInfo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">,</span> <span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<div class="viewcode-block" id="DeviceInformationSet.enum_device_interface"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.DeviceInformationSet.enum_device_interface">[docs]</a> <span class="k">def</span> <span class="nf">enum_device_interface</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">):</span>
|
||||
<span class="sd">"""Not Implemented Yet"""</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"enum_device_interface"</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">all</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="DeviceInstance"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.DeviceInstance">[docs]</a><span class="k">class</span> <span class="nc">DeviceInstance</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SP_DEVINFO_DATA</span><span class="p">):</span>
|
||||
<span class="sd">"""An instance of a Device.</span>
|
||||
|
||||
<span class="sd"> The properties are from the page https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_address</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">information_set</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">information_set</span> <span class="o">=</span> <span class="n">information_set</span>
|
||||
|
||||
<span class="c1"># make a .device_class ? that return the DeviceClass ased in ClassGuid ?</span>
|
||||
<span class="k">def</span> <span class="nf">get_property</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">property</span><span class="p">):</span>
|
||||
<span class="n">datatype</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">()</span>
|
||||
<span class="n">buffer_size</span> <span class="o">=</span> <span class="mh">0x1000</span>
|
||||
<span class="n">buffer</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">BYTE</span><span class="p">,</span> <span class="n">nbelt</span><span class="o">=</span><span class="n">buffer_size</span><span class="p">)()</span>
|
||||
<span class="n">required_size</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">()</span>
|
||||
<span class="c1"># Registry parsing code expect W stuff, so use W function</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">SetupDiGetDeviceRegistryPropertyW</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">information_set</span><span class="p">,</span> <span class="bp">self</span><span class="p">,</span> <span class="nb">property</span><span class="p">,</span> <span class="n">datatype</span><span class="p">,</span> <span class="n">buffer</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">LPBYTE</span><span class="p">),</span> <span class="n">buffer_size</span><span class="p">,</span> <span class="n">required_size</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_INVALID_DATA</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="c1"># PropertyRegDataType</span>
|
||||
<span class="c1"># A pointer to a variable that receives the data type of the property</span>
|
||||
<span class="c1"># that is being retrieved.</span>
|
||||
<span class="c1"># This is one of the standard registry data types</span>
|
||||
<span class="c1"># Look like its registry based, so use the registry decoders :)</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winobject</span><span class="o">.</span><span class="n">registry</span><span class="o">.</span><span class="n">decode_registry_buffer</span><span class="p">(</span><span class="n">datatype</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="n">required_size</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">_generate_property_getter</span><span class="p">(</span><span class="n">prop</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">getter</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_property</span><span class="p">(</span><span class="n">prop</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">property</span><span class="p">(</span><span class="n">getter</span><span class="p">)</span>
|
||||
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_FRIENDLYNAME</span><span class="p">)</span>
|
||||
<span class="sd">"""The name of the device"""</span>
|
||||
<span class="n">description</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_DEVICEDESC</span><span class="p">)</span>
|
||||
<span class="sd">"""The description of the device"""</span>
|
||||
<span class="n">hardware_id</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_HARDWAREID</span><span class="p">)</span>
|
||||
<span class="sd">"""The list of hardware IDs for the device.</span>
|
||||
<span class="sd"> (https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_hardwareid)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">enumerator_name</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_ENUMERATOR_NAME</span><span class="p">)</span>
|
||||
<span class="sd">"""The enumerator name of the devices</span>
|
||||
<span class="sd"> (https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_enumerator_name)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">driver</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_DRIVER</span><span class="p">)</span>
|
||||
<span class="sd">"""The driver of the device</span>
|
||||
<span class="sd"> https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_driver</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Map on Device type ?</span>
|
||||
<span class="c1"># https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/specifying-device-types</span>
|
||||
<span class="nb">type</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_DEVTYPE</span><span class="p">)</span>
|
||||
<span class="sd">"""The type of device</span>
|
||||
<span class="sd"> (https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/specifying-device-types)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">upper_filters</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_UPPERFILTERS</span><span class="p">)</span>
|
||||
<span class="sd">"""A list of string that contains the names of a device's upper filter drivers."""</span>
|
||||
<span class="n">lower_filters</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_LOWERFILTERS</span><span class="p">)</span>
|
||||
<span class="sd">"""A list of string that contains the names of a device's lower filter drivers."""</span>
|
||||
<span class="n">raw_security_descriptor</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_SECURITY</span><span class="p">)</span>
|
||||
<span class="sd">"""The raw (binary) security descriptor of the device"""</span>
|
||||
<span class="c1"># I would prefer to use the security_descriptor sddl</span>
|
||||
<span class="c1"># ssdl = _generate_property_getter(gdef.SPDRP_SECURITY_SDS)</span>
|
||||
<span class="n">service_name</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_SERVICE</span><span class="p">)</span>
|
||||
<span class="sd">"""The name of the service for the device</span>
|
||||
<span class="sd"> (https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_service)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">manufacturer</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_MFG</span><span class="p">)</span>
|
||||
<span class="sd">"""The name of the device manufacturer."""</span>
|
||||
<span class="n">location_information</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_LOCATION_INFORMATION</span><span class="p">)</span>
|
||||
<span class="sd">"""The hardware location of a device."""</span>
|
||||
<span class="n">location_paths</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_LOCATION_PATHS</span><span class="p">)</span>
|
||||
<span class="sd">"""A list of strings that represents the location of the device in the device tree."""</span>
|
||||
<span class="c1"># Looks like it can raise ERROR_NO_SUCH_DEVINST</span>
|
||||
<span class="c1"># install_date = _generate_property_getter(gdef.SPDRP_INSTALL_STATE)</span>
|
||||
<span class="n">capabilites</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_CAPABILITIES</span><span class="p">)</span>
|
||||
<span class="sd">"""The device capabilites</span>
|
||||
<span class="sd"> (https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_capabilities)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">bus_type</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_BUSTYPEGUID</span><span class="p">)</span>
|
||||
<span class="sd">"""The function retrieves the GUID for the device's bus type."""</span>
|
||||
<span class="n">bus_number</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_BUSNUMBER</span><span class="p">)</span>
|
||||
<span class="sd">"""The device's bus number."""</span>
|
||||
<span class="n">address</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_ADDRESS</span><span class="p">)</span>
|
||||
<span class="sd">"""The device's address."""</span>
|
||||
<span class="n">ui_number</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_UI_NUMBER</span><span class="p">)</span>
|
||||
<span class="sd">"""Retrieves a DWORD value set to the value of the UINumber member of the device's"""</span>
|
||||
<span class="n">ui_number_desc_format</span> <span class="o">=</span> <span class="n">_generate_property_getter</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_UI_NUMBER_DESC_FORMAT</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Getter with special error handling</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">device_object_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The function retrieves a string that contains the name that is associated with the device's PDO."""</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SPDRP_PHYSICAL_DEVICE_OBJECT_NAME</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_INVALID_DATA</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_NO_SUCH_DEVINST</span><span class="p">):</span>
|
||||
<span class="k">raise</span>
|
||||
|
||||
|
||||
<span class="c1"># https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources</span>
|
||||
<span class="c1"># Explanation of types:</span>
|
||||
<span class="c1"># - https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources#logical-configuration-types-for-resource-requirements-lists</span>
|
||||
<span class="k">def</span> <span class="nf">get_first_logical_configuration</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">LogicalConfiguration</span><span class="p">()</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">CM_Get_First_Log_Conf</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">DevInst</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CR_CALL_NOT_IMPLEMENTED</span><span class="p">:</span>
|
||||
<span class="n">e</span><span class="o">.</span><span class="n">strerror</span> <span class="o">+=</span> <span class="s2">" (Cannot be called from Wow64 process since Win8)"</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_next_logical_configuration</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">logconf</span><span class="p">):</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">HANDLE</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">CM_Get_Next_Log_Conf</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">logconf</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_logical_configuration_generator</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_first_logical_configuration</span><span class="p">(</span><span class="nb">type</span><span class="p">)</span>
|
||||
<span class="k">while</span> <span class="n">x</span><span class="p">:</span>
|
||||
<span class="k">yield</span> <span class="n">x</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_next_logical_configuration</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CR_NO_MORE_LOG_CONF</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">raise</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_logical_configuration</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_logical_configuration_generator</span><span class="p">(</span><span class="nb">type</span><span class="p">))</span>
|
||||
|
||||
|
||||
<span class="c1"># Allocated Configuration</span>
|
||||
<span class="c1"># From https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources#logical-configuration-types-for-resource-lists</span>
|
||||
<span class="c1"># A resource list identifying resources currently in use by a device instance.</span>
|
||||
<span class="c1"># !!! Only one allocated configuration can exist for each device instance.</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">allocated_configuration</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The allocated configuration of the device.</span>
|
||||
<span class="sd"> (https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources#logical-configuration-types-for-resource-lists)</span>
|
||||
|
||||
<span class="sd"> :type: :class:`LogicalConfiguration`</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">allocconfs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_logical_configuration</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">ALLOC_LOG_CONF</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">allocconfs</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">allocconfs</span>
|
||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">allocconfs</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="c1"># Only one allocated configuration can exist for each device instance.</span>
|
||||
<span class="k">return</span> <span class="n">allocconfs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># Boot Configuration</span>
|
||||
<span class="c1"># From https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources#logical-configuration-types-for-resource-lists</span>
|
||||
<span class="c1"># A resource list identifying the resources assigned to a device instance when the system is booted</span>
|
||||
<span class="c1"># Only one boot configuration can exist for each device instance.</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">boot_configuration</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The boot configuration of the device.</span>
|
||||
<span class="sd"> (https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources#logical-configuration-types-for-resource-lists)</span>
|
||||
|
||||
<span class="sd"> :type: :class:`LogicalConfiguration`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">bootconfs</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_logical_configuration</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">BOOT_LOG_CONF</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">bootconfs</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">bootconfs</span>
|
||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">bootconfs</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span> <span class="c1"># Only one boot configuration can exist for each device instance.</span>
|
||||
<span class="k">return</span> <span class="n">bootconfs</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
|
||||
|
||||
<span class="c1"># Make properties for Each type of logical configuration ?</span>
|
||||
|
||||
<span class="c1"># 'advanced' attributes extrapolated from properties</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">security_descriptor</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The security descriptor of the device.</span>
|
||||
|
||||
<span class="sd"> :type: :class:`~windows.security.SecurityDescriptor`</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">SecurityDescriptor</span><span class="o">.</span><span class="n">from_binary</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">raw_security_descriptor</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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">" (id=</span><span class="si">{2}</span><span class="s2">)>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">description</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">DevInst</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="LogicalConfiguration"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.LogicalConfiguration">[docs]</a><span class="k">class</span> <span class="nc">LogicalConfiguration</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">HANDLE</span><span class="p">):</span>
|
||||
<span class="sd">"""Logical Configuration of a Device instance"""</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_next_resource_descriptor</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">resource</span><span class="p">,</span> <span class="n">resdes</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">resdes</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="c1"># Using logical-conf as resdes will retrieve the first one</span>
|
||||
<span class="c1"># https://docs.microsoft.com/en-us/windows/win32/api/cfgmgr32/nf-cfgmgr32-cm_get_next_res_des#remarks</span>
|
||||
<span class="n">resdes</span> <span class="o">=</span> <span class="bp">self</span>
|
||||
<span class="n">resid</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="n">resource</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ResType_All</span><span class="p">:</span>
|
||||
<span class="n">resid</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">RESOURCEID</span><span class="p">()</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">HANDLE</span><span class="p">()</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">CM_Get_Next_Res_Des</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">resdes</span><span class="p">,</span> <span class="n">resource</span><span class="p">,</span> <span class="n">resid</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
<span class="n">resdes_type</span> <span class="o">=</span> <span class="n">resid</span><span class="o">.</span><span class="n">value</span> <span class="k">if</span> <span class="n">resid</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">resource</span>
|
||||
<span class="k">return</span> <span class="n">ResourceDescriptor</span><span class="o">.</span><span class="n">from_handle_and_type</span><span class="p">(</span><span class="n">res</span><span class="o">.</span><span class="n">value</span><span class="p">,</span> <span class="n">resdes_type</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_resources_for_type</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_next_resource_descriptor</span><span class="p">(</span><span class="nb">type</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="n">current</span>
|
||||
<span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
|
||||
<span class="n">current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_next_resource_descriptor</span><span class="p">(</span><span class="nb">type</span><span class="p">,</span> <span class="n">current</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="n">current</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CR_NO_MORE_RES_DES</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">raise</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">resources</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The list of resources in the current logical configuration</span>
|
||||
|
||||
<span class="sd"> :type: [:class:`ResourceDescriptor`] -- A list of [:class:`ResourceDescriptor`]</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">get_resources_for_type</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">ResType_All</span><span class="p">))</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="n">ResType_Mapper</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">FlagMapper</span><span class="p">(</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_None</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_Mem</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_IO</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_DMA</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_IRQ</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_BusNumber</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_MemLarge</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_ClassSpecific</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_DevicePrivate</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_MfCardConfig</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_PcCardConfig</span><span class="p">,</span>
|
||||
|
||||
<span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="ResourceDescriptor"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.ResourceDescriptor">[docs]</a><span class="k">class</span> <span class="nc">ResourceDescriptor</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">HANDLE</span><span class="p">):</span>
|
||||
<span class="sd">"""Describe a resource allocated or reserved by a device instance.</span>
|
||||
<span class="sd"> This class is a base class, all resources returned by :class:`LogicalConfiguration` should be one of the following:</span>
|
||||
|
||||
<span class="sd"> * :class:`ResourceNoType`</span>
|
||||
<span class="sd"> * :class:`MemoryResource`</span>
|
||||
<span class="sd"> * :class:`IoResource`</span>
|
||||
<span class="sd"> * :class:`DmaResource`</span>
|
||||
<span class="sd"> * :class:`IrqResource`</span>
|
||||
<span class="sd"> * :class:`BusNumberResource`</span>
|
||||
<span class="sd"> * :class:`MemLargeResource`</span>
|
||||
<span class="sd"> * :class:`ClassSpecificResource`</span>
|
||||
<span class="sd"> * :class:`DevicePrivateResource`</span>
|
||||
<span class="sd"> * :class:`MfCardConfigResource`</span>
|
||||
<span class="sd"> * :class:`PcCardConfigResource`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">SUBCLASSES</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ResourceDescriptor</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="n">handle</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">type</span> <span class="o">=</span> <span class="n">ResType_Mapper</span><span class="p">[</span><span class="nb">type</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">from_handle_and_type</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="nb">type</span><span class="p">):</span>
|
||||
<span class="n">ecls</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">SUBCLASSES</span><span class="p">[</span><span class="nb">type</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="n">ecls</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="nb">type</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">rawdata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The raw data describing the resource"""</span>
|
||||
<span class="n">data_size</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ULONG</span><span class="p">()</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">CM_Get_Res_Des_Data_Size</span><span class="p">(</span><span class="n">data_size</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="n">data_size</span> <span class="o">=</span> <span class="n">data_size</span><span class="o">.</span><span class="n">value</span>
|
||||
<span class="n">buffer</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">create_string_buffer</span><span class="p">(</span><span class="n">data_size</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">CM_Get_Res_Des_Data</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="n">data_size</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">bytearray</span><span class="p">(</span><span class="n">buffer</span><span class="p">[:</span><span class="n">data_size</span><span class="p">])</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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"> type=</span><span class="si">{1!r}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">ResourceDescriptorWithHeader</span><span class="p">(</span><span class="n">ResourceDescriptor</span><span class="p">):</span>
|
||||
<span class="c1"># Assert the header is the first field</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">header_type</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Type of first field</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">DATA_TYPE</span><span class="o">.</span><span class="n">_fields_</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">1</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">header_type</span><span class="o">.</span><span class="n">from_buffer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">rawdata</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">ResourceDescriptorWithHeaderAndRanges</span><span class="p">(</span><span class="n">ResourceDescriptorWithHeader</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">count_field_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Assert (manyally checked) that the first field of the</span>
|
||||
<span class="c1"># header is a field containing the size of the data array</span>
|
||||
<span class="c1"># Return name of the first field of the header</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">header_type</span><span class="o">.</span><span class="n">_fields_</span><span class="p">[</span><span class="mi">0</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">count_field_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">count_field_name</span><span class="p">()</span>
|
||||
<span class="n">count</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">header</span><span class="p">,</span> <span class="n">count_field_name</span><span class="p">)</span>
|
||||
<span class="c1"># No entry:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">count</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="p">[]</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Resource descriptor with non-zero entry in range array"</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="ResourceNoType"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.ResourceNoType">[docs]</a><span class="k">class</span> <span class="nc">ResourceNoType</span><span class="p">(</span><span class="n">ResourceDescriptor</span><span class="p">):</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">rawdata</span></div>
|
||||
|
||||
<div class="viewcode-block" id="MemoryResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.MemoryResource">[docs]</a><span class="k">class</span> <span class="nc">MemoryResource</span><span class="p">(</span><span class="n">ResourceDescriptorWithHeaderAndRanges</span><span class="p">):</span>
|
||||
<span class="sd">"""A resource of type MEM_RESOURCE"""</span>
|
||||
<span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">MEM_RESOURCE</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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:#016x}</span><span class="s2">-</span><span class="si">{2:#016x}</span><span class="s2">]>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">MD_Alloc_Base</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">MD_Alloc_End</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="IoResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.IoResource">[docs]</a><span class="k">class</span> <span class="nc">IoResource</span><span class="p">(</span><span class="n">ResourceDescriptorWithHeaderAndRanges</span><span class="p">):</span>
|
||||
<span class="sd">"""A resource of type IO_RESOURCE"""</span>
|
||||
<span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IO_RESOURCE</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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:#016x}</span><span class="s2">-</span><span class="si">{2:#016x}</span><span class="s2">]>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">IOD_Alloc_Base</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">IOD_Alloc_End</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="DmaResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.DmaResource">[docs]</a><span class="k">class</span> <span class="nc">DmaResource</span><span class="p">(</span><span class="n">ResourceDescriptorWithHeaderAndRanges</span><span class="p">):</span>
|
||||
<span class="sd">"""A resource of type DMA_RESOURCE"""</span>
|
||||
<span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DMA_RESOURCE</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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:#016x}</span><span class="s2">]>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">DD_Alloc_Chan</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="IrqResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.IrqResource">[docs]</a><span class="k">class</span> <span class="nc">IrqResource</span><span class="p">(</span><span class="n">ResourceDescriptorWithHeaderAndRanges</span><span class="p">):</span>
|
||||
<span class="sd">"""A resource of type IRQ_RESOURCE"""</span>
|
||||
<span class="c1"># 32/64 based on current process bitness</span>
|
||||
<span class="c1"># Cross bitness cannot be implemented as >=Win8 block it</span>
|
||||
<span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">IRQ_RESOURCE</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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:#016x}</span><span class="s2">]>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">IRQD_Alloc_Num</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="BusNumberResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.BusNumberResource">[docs]</a><span class="k">class</span> <span class="nc">BusNumberResource</span><span class="p">(</span><span class="n">ResourceDescriptorWithHeaderAndRanges</span><span class="p">):</span>
|
||||
<span class="sd">"""A resource of type BUSNUMBER_RESOURCE"""</span>
|
||||
<span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BUSNUMBER_RESOURCE</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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:#016x}</span><span class="s2">-</span><span class="si">{2:#016x}</span><span class="s2">]>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">BUSD_Alloc_Base</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">BUSD_Alloc_End</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="MemLargeResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.MemLargeResource">[docs]</a><span class="k">class</span> <span class="nc">MemLargeResource</span><span class="p">(</span><span class="n">ResourceDescriptor</span><span class="p">):</span>
|
||||
<span class="sd">"""A resource of type MEM_LARGE_RESOURCE"""</span>
|
||||
<span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">MEM_LARGE_RESOURCE</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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:#016x}</span><span class="s2">-</span><span class="si">{2:#016x}</span><span class="s2">]>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">MLD_Alloc_Base</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">header</span><span class="o">.</span><span class="n">MLD_Alloc_End</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="ClassSpecificResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.ClassSpecificResource">[docs]</a><span class="k">class</span> <span class="nc">ClassSpecificResource</span><span class="p">(</span><span class="n">ResourceDescriptorWithHeader</span><span class="p">):</span>
|
||||
<span class="sd">"""A resource of type CS_RESOURCE"""</span>
|
||||
<span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">CS_RESOURCE</span></div>
|
||||
<span class="c1"># Any idea for __str__ ?</span>
|
||||
|
||||
<div class="viewcode-block" id="DevicePrivateResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.DevicePrivateResource">[docs]</a><span class="k">class</span> <span class="nc">DevicePrivateResource</span><span class="p">(</span><span class="n">ResourceDescriptor</span><span class="p">):</span>
|
||||
<span class="sd">"""A device private resource</span>
|
||||
<span class="sd"> (https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devprivate-resource)</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">header</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="kc">None</span></div>
|
||||
|
||||
<span class="c1"># Any idea for __str__ ?</span>
|
||||
|
||||
<div class="viewcode-block" id="MfCardConfigResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.MfCardConfigResource">[docs]</a><span class="k">class</span> <span class="nc">MfCardConfigResource</span><span class="p">(</span><span class="n">ResourceDescriptorWithHeader</span><span class="p">):</span>
|
||||
<span class="sd">"""A resource of type MFCARD_RESOURCE"""</span>
|
||||
<span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">MFCARD_RESOURCE</span></div>
|
||||
<span class="c1"># Any idea for __str__ ?</span>
|
||||
|
||||
<div class="viewcode-block" id="PcCardConfigResource"><a class="viewcode-back" href="../../../device_manager.html#windows.winobject.device_manager.PcCardConfigResource">[docs]</a><span class="k">class</span> <span class="nc">PcCardConfigResource</span><span class="p">(</span><span class="n">ResourceDescriptorWithHeader</span><span class="p">):</span>
|
||||
<span class="sd">"""A resource of type PCCARD_RESOURCE"""</span>
|
||||
<span class="n">DATA_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PCCARD_RESOURCE</span></div>
|
||||
<span class="c1"># Any idea for __str__ ?</span>
|
||||
|
||||
<span class="c1"># Flemme de faire une meta-classe pour ca..</span>
|
||||
<span class="n">ResourceDescriptor</span><span class="o">.</span><span class="n">SUBCLASSES</span><span class="o">.</span><span class="n">update</span><span class="p">({</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_None</span><span class="p">:</span> <span class="n">ResourceNoType</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_Mem</span><span class="p">:</span> <span class="n">MemoryResource</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_IO</span><span class="p">:</span> <span class="n">IoResource</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_DMA</span><span class="p">:</span> <span class="n">DmaResource</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_IRQ</span><span class="p">:</span> <span class="n">IrqResource</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_BusNumber</span><span class="p">:</span> <span class="n">BusNumberResource</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_MemLarge</span><span class="p">:</span> <span class="n">MemLargeResource</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_ClassSpecific</span><span class="p">:</span> <span class="n">ClassSpecificResource</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_DevicePrivate</span><span class="p">:</span> <span class="n">DevicePrivateResource</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_MfCardConfig</span><span class="p">:</span> <span class="n">MfCardConfigResource</span><span class="p">,</span>
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">ResType_PcCardConfig</span><span class="p">:</span> <span class="n">PcCardConfigResource</span><span class="p">,</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.6 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-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+135
-96
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.event_log — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.event_log — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -40,12 +43,12 @@
|
||||
<span></span><span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">os.path</span>
|
||||
<span class="kn">import</span> <span class="nn">xml.dom.minidom</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="k">import</span> <span class="n">contextmanager</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">contextmanager</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="k">import</span> <span class="n">int_types</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">int_types</span><span class="p">,</span> <span class="n">basestring</span>
|
||||
|
||||
|
||||
<span class="c1"># Helpers</span>
|
||||
@@ -96,7 +99,7 @@
|
||||
<span class="c1"># No need to pass any param to close ourself :)</span>
|
||||
<span class="n">_close_function</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">EvtClose</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="nb">bool</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_close_function</span><span class="p">()</span>
|
||||
@@ -106,11 +109,11 @@
|
||||
<span class="sd">"""Represent an Event-log query"""</span>
|
||||
<span class="n">TIMEOUT</span> <span class="o">=</span> <span class="mh">0x1000</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">handle</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">channel</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">channel</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">EvtQuery</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="n">handle</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__next__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__next__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Return the next :class:`EvtEvent` matching the query"""</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">event</span> <span class="o">=</span> <span class="n">EvtEvent</span><span class="p">(</span><span class="n">channel</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="p">)</span>
|
||||
@@ -123,10 +126,25 @@
|
||||
<span class="k">assert</span> <span class="n">ret</span><span class="o">.</span><span class="n">value</span> <span class="o">==</span> <span class="mi">1</span>
|
||||
<span class="k">return</span> <span class="n">event</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">seek</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">position</span><span class="p">,</span> <span class="n">seek_flags</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="EvtQuery.seek"><a class="viewcode-back" href="../../../evtlog.html#windows.winobject.event_log.EvtQuery.seek">[docs]</a> <span class="k">def</span> <span class="nf">seek</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">position</span><span class="p">,</span> <span class="n">seek_flags</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Seek to ``position``.</span>
|
||||
<span class="sd"> ``seek_flags`` can be one of:</span>
|
||||
|
||||
<span class="sd"> * ``None``</span>
|
||||
<span class="sd"> * ``EvtSeekRelativeToFirst``</span>
|
||||
<span class="sd"> * ``EvtSeekRelativeToLast``</span>
|
||||
<span class="sd"> * ``EvtSeekRelativeToBookmark``</span>
|
||||
|
||||
<span class="sd"> If ``seek_flags`` is None:</span>
|
||||
|
||||
<span class="sd"> * ``position >= 0`` will use ``EvtSeekRelativeToFirst``</span>
|
||||
<span class="sd"> * ``position < 0`` will use ``EvtSeekRelativeToLast`` and with ``position+1``</span>
|
||||
<span class="sd"> * This allow retrieve the ``position`` lasts events</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">seek_flags</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">position</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">:</span>
|
||||
<span class="n">seek_flags</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtSeekRelativeToFirst</span>
|
||||
@@ -136,7 +154,7 @@
|
||||
<span class="c1"># If user do not want this calcul it can directly pass seek_flags</span>
|
||||
<span class="n">seek_flags</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtSeekRelativeToLast</span>
|
||||
<span class="n">position</span> <span class="o">+=</span> <span class="mi">1</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">EvtSeek</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">position</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">seek_flags</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">EvtSeek</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">position</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">seek_flags</span><span class="p">)</span></div>
|
||||
|
||||
<span class="nb">next</span> <span class="o">=</span> <span class="fm">__next__</span> <span class="c1"># Yep.. real name is 'next' in Py2 :D</span>
|
||||
|
||||
@@ -159,7 +177,7 @@
|
||||
|
||||
<div class="viewcode-block" id="EvtEvent"><a class="viewcode-back" href="../../../evtlog.html#windows.winobject.event_log.EvtEvent">[docs]</a><span class="k">class</span> <span class="nc">EvtEvent</span><span class="p">(</span><span class="n">EvtHandle</span><span class="p">):</span>
|
||||
<span class="sd">"""An Event log"""</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">handle</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">channel</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="mi">0</span><span class="p">,</span> <span class="n">channel</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">EvtEvent</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="n">handle</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">channel</span> <span class="o">=</span> <span class="n">channel</span>
|
||||
|
||||
@@ -214,10 +232,11 @@
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtRenderEventValues</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">r</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">result</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">event_values</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="EvtEvent.event_values"><a class="viewcode-back" href="../../../evtlog.html#windows.winobject.event_log.EvtEvent.event_values">[docs]</a> <span class="k">def</span> <span class="nf">event_values</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The values of the event in a list"""</span>
|
||||
<span class="n">ctx</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">EvtCreateRenderContext</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtRenderContextUser</span><span class="p">)</span>
|
||||
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">render</span><span class="p">(</span><span class="n">ctx</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtRenderEventValues</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">r</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">result</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">r</span><span class="o">.</span><span class="n">value</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">result</span><span class="p">]</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_raw_values</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">values</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtRenderContextValues</span><span class="p">):</span>
|
||||
<span class="n">nbelt</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">values</span><span class="p">)</span>
|
||||
@@ -234,8 +253,14 @@
|
||||
<span class="c1"># Properties arround common Event/System values</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">provider</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The provider of the event"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_values</span><span class="p">()[</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtSystemProviderName</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">computer</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The computer that generated the event"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_values</span><span class="p">()[</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtSystemComputer</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The ID of the Event"""</span>
|
||||
@@ -271,6 +296,16 @@
|
||||
<span class="sd">"""The process ID of the Event"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">"Event/System/Execution/@ThreadID"</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">error_payload</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">raw</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">(</span><span class="s2">"Event/ProcessingErrorData/EventPayload"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="nb">bytearray</span><span class="p">(</span><span class="n">raw</span><span class="p">)</span> <span class="k">if</span> <span class="n">raw</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> <span class="k">else</span> <span class="kc">None</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">user</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The User ID associated with the Event"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">system_values</span><span class="p">()[</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtSystemUserID</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">metadata</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The medata for the current Event</span>
|
||||
@@ -285,9 +320,6 @@
|
||||
<span class="c1"># id not found: try via the Provider in the event (classic channel)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel</span><span class="o">.</span><span class="n">get_classic_event_metadata</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">provider</span><span class="p">)</span>
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="c1"># Test</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="c1"># user/event specifique data</span>
|
||||
@@ -301,12 +333,51 @@
|
||||
<span class="n">event_data_name</span> <span class="o">=</span> <span class="p">(</span><span class="n">i</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">metadata</span><span class="o">.</span><span class="n">event_data</span> <span class="k">if</span> <span class="n">i</span><span class="p">[</span><span class="s2">"type"</span><span class="p">]</span> <span class="o">==</span> <span class="s2">"data"</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">{</span><span class="n">k</span><span class="p">:</span><span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span><span class="n">v</span> <span class="ow">in</span> <span class="nb">zip</span><span class="p">(</span><span class="n">event_data_name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">event_values</span><span class="p">())}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">xml_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">xmlevt</span> <span class="o">=</span> <span class="n">xml</span><span class="o">.</span><span class="n">dom</span><span class="o">.</span><span class="n">minidom</span><span class="o">.</span><span class="n">parseString</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">render_xml</span><span class="p">())</span>
|
||||
<span class="n">res</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="n">eventdata</span> <span class="o">=</span> <span class="n">xmlevt</span><span class="o">.</span><span class="n">getElementsByTagName</span><span class="p">(</span><span class="s2">"EventData"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">eventdata</span><span class="p">:</span>
|
||||
<span class="c1"># <Data Name='FIELD_NAME'>FIELD_VALUE</Data></span>
|
||||
<span class="k">for</span> <span class="n">i</span><span class="p">,</span> <span class="n">datanode</span> <span class="ow">in</span> <span class="nb">enumerate</span><span class="p">(</span><span class="n">xmlevt</span><span class="o">.</span><span class="n">getElementsByTagName</span><span class="p">(</span><span class="s2">"Data"</span><span class="p">)):</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">datanode</span><span class="o">.</span><span class="n">getAttribute</span><span class="p">(</span><span class="s2">"Name"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">name</span><span class="p">:</span>
|
||||
<span class="c1"># Some Data in old EVTX have no name (Windows Powershell)</span>
|
||||
<span class="c1"># Do the best we can by using the position of the event</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">i</span><span class="p">)</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">datanode</span><span class="o">.</span><span class="n">hasChildNodes</span><span class="p">():</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">datanode</span><span class="o">.</span><span class="n">firstChild</span><span class="o">.</span><span class="n">nodeValue</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">res</span><span class="p">):</span>
|
||||
<span class="kn">import</span> <span class="nn">pdb</span><span class="p">;</span><span class="n">pdb</span><span class="o">.</span><span class="n">set_trace</span><span class="p">()</span>
|
||||
<span class="n">res</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
<span class="n">userdata</span> <span class="o">=</span> <span class="n">xmlevt</span><span class="o">.</span><span class="n">getElementsByTagName</span><span class="p">(</span><span class="s2">"UserData"</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="n">userdata</span><span class="p">:</span>
|
||||
<span class="c1"># <UserData></span>
|
||||
<span class="c1"># <EventXML xmlns="Event_NS"></span>
|
||||
<span class="c1"># <FIELD_NAME>FIELD_VALUE</FIELD_NAME></span>
|
||||
<span class="c1"># </EventXML></span>
|
||||
<span class="c1"># </UserData></span>
|
||||
<span class="k">for</span> <span class="n">datanode</span> <span class="ow">in</span> <span class="n">userdata</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">firstChild</span><span class="o">.</span><span class="n">childNodes</span><span class="p">:</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">datanode</span><span class="o">.</span><span class="n">tagName</span>
|
||||
<span class="k">if</span> <span class="n">datanode</span><span class="o">.</span><span class="n">hasChildNodes</span><span class="p">():</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">datanode</span><span class="o">.</span><span class="n">firstChild</span><span class="o">.</span><span class="n">nodeValue</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="s2">""</span>
|
||||
<span class="k">assert</span> <span class="n">name</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">res</span>
|
||||
<span class="n">res</span><span class="p">[</span><span class="n">name</span><span class="p">]</span> <span class="o">=</span> <span class="n">value</span>
|
||||
<span class="k">return</span> <span class="n">res</span>
|
||||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">date</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Event.time_created as a datetime"""</span>
|
||||
<span class="sd">"""``Event.time_created`` as a :class:``datetime``"""</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">datetime_from_filetime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">time_created</span><span class="p">)</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">creation_time</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">datetime_from_filetime</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">time_created</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> id="</span><span class="si">{self.id}</span><span class="s1">" time="</span><span class="si">{creation_time}</span><span class="s1">">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">=</span><span class="bp">self</span><span class="p">,</span> <span class="n">creation_time</span><span class="o">=</span><span class="n">creation_time</span><span class="p">)</span></div>
|
||||
|
||||
@@ -372,6 +443,10 @@
|
||||
<span class="n">vtype</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtVarTypeUInt64</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
|
||||
<span class="n">vtype</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtVarTypeString</span>
|
||||
<span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="nb">bytes</span><span class="p">):</span>
|
||||
<span class="c1"># not basestring and bytes -> py3 bytes</span>
|
||||
<span class="n">vtype</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtVarTypeBinary</span>
|
||||
<span class="n">value</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">BYTE</span><span class="p">)</span><span class="o">.</span><span class="n">from_buffer_copy</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"LATER"</span><span class="p">)</span>
|
||||
<span class="bp">self</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">()</span>
|
||||
@@ -385,36 +460,16 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">Count</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</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">def</span> <span class="fm">__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"> of type=</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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="c1"># x = windows.winproxy.EvtQuery(None,</span>
|
||||
<span class="c1"># "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall",</span>
|
||||
<span class="c1"># "Event/System[EventID=2004 or EventID=2006]",</span>
|
||||
<span class="c1"># gdef.EvtQueryChannelPath + gdef.EvtQueryForwardDirection)</span>
|
||||
<span class="c1"># print(x)</span>
|
||||
<span class="c1"># eq = EvtQuery(x)</span>
|
||||
<span class="c1"># event = next(eq)</span>
|
||||
|
||||
<span class="c1"># xx = gdef.LPWSTR("ModifyingApplication")</span>
|
||||
<span class="c1"># xx = gdef.LPWSTR("Event/System/Channel")</span>
|
||||
<span class="c1"># xx = gdef.LPWSTR('Event/EventData/Data[@Name="ModifyingApplication"]')</span>
|
||||
<span class="c1"># xx = gdef.LPWSTR('Event/System/EventID')</span>
|
||||
|
||||
<span class="c1"># event = next(eq)</span>
|
||||
|
||||
<span class="c1"># list(channels())</span>
|
||||
|
||||
<div class="viewcode-block" id="EvtChannel"><a class="viewcode-back" href="../../../evtlog.html#windows.winobject.event_log.EvtChannel">[docs]</a><span class="k">class</span> <span class="nc">EvtChannel</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""An Event Log channel"""</span>
|
||||
<span class="n">DEFAULT_QUERY_FLAGS</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtQueryChannelPath</span> <span class="o">+</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtQueryForwardDirection</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">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">event_metadata_by_id</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">classic_event_metadata_by_id</span> <span class="o">=</span> <span class="p">{}</span> <span class="c1"># For classic only</span>
|
||||
@@ -486,7 +541,7 @@
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">classic_event_metadata_by_id</span><span class="p">[</span><span class="n">providername</span><span class="p">][</span><span class="nb">id</span><span class="p">]</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> "</span><span class="si">{1}</span><span class="s1">">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -505,7 +560,7 @@
|
||||
|
||||
<div class="viewcode-block" id="ChannelConfig"><a class="viewcode-back" href="../../../evtlog.html#windows.winobject.event_log.ChannelConfig">[docs]</a><span class="k">class</span> <span class="nc">ChannelConfig</span><span class="p">(</span><span class="n">EvtHandle</span><span class="p">):</span>
|
||||
<span class="sd">"""The configuration of a event channel"""</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">handle</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">ChannelConfig</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="n">handle</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
|
||||
@@ -537,12 +592,14 @@
|
||||
<span class="sd">"""``True`` if the channel is a classic event channel (for example the Application or System log)"""</span>
|
||||
<span class="k">return</span> <span class="nb">bool</span><span class="p">(</span><span class="n">chaninfo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtChannelConfigClassicEventlog</span><span class="p">)</span><span class="o">.</span><span class="n">value</span><span class="p">)</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> "</span><span class="si">{1}</span><span class="s1">">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">class</span> <span class="nc">PublisherMetadataChannel</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">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="k">class</span> <span class="nc">PublisherMetadataChannel</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a PublisherMetadataChannel (see https://docs.microsoft.com/en-us/windows/win32/api/winevt/ne-winevt-evt_publisher_metadata_property_id)"""</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">PublisherMetadataChannel</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="bp">self</span><span class="o">.</span><span class="n">pub_metadata</span> <span class="o">=</span> <span class="n">pub_metadata</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="n">channel_id</span>
|
||||
@@ -552,28 +609,33 @@
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">flags</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The flags of the ``PublisherMetadataChannel``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_channel_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataChannelReferenceFlags</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The name of the ``PublisherMetadataChannel``"""</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_channel_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataChannelReferencePath</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The reference id of the ``PublisherMetadataChannel``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_channel_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataChannelReferenceID</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">index</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The reference index of the ``PublisherMetadataChannel``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_channel_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataChannelReferenceIndex</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">message_id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The message id of the ``PublisherMetadataChannel``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_channel_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataChannelReferenceMessageID</span><span class="p">))</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">PublisherMetadataLevel</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">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a PublisherMetadataLevel (see https://docs.microsoft.com/en-us/windows/win32/api/winevt/ne-winevt-evt_publisher_metadata_property_id)"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">PublisherMetadataLevel</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="bp">self</span><span class="o">.</span><span class="n">pub_metadata</span> <span class="o">=</span> <span class="n">pub_metadata</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="n">channel_id</span>
|
||||
@@ -595,8 +657,8 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">PublisherMetadataOpcode</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">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a PublisherMetadataOpcode (see https://docs.microsoft.com/en-us/windows/win32/api/winevt/ne-winevt-evt_publisher_metadata_property_id)"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">PublisherMetadataOpcode</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="bp">self</span><span class="o">.</span><span class="n">pub_metadata</span> <span class="o">=</span> <span class="n">pub_metadata</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="n">channel_id</span>
|
||||
@@ -606,20 +668,24 @@
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The name of the ``PublisherMetadataOpcode``"""</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_opcode_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataOpcodeName</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The opcode value of the ``PublisherMetadataOpcode``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_opcode_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataOpcodeValue</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">message_id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The message id of the ``PublisherMetadataOpcode``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_opcode_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataOpcodeMessageID</span><span class="p">))</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">PublisherMetadataKeyword</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a PublisherMetadataKeyword (see https://docs.microsoft.com/en-us/windows/win32/api/winevt/ne-winevt-evt_publisher_metadata_property_id)"""</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">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">PublisherMetadataKeyword</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="bp">self</span><span class="o">.</span><span class="n">pub_metadata</span> <span class="o">=</span> <span class="n">pub_metadata</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="n">channel_id</span>
|
||||
@@ -629,19 +695,22 @@
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The name of the ``PublisherMetadataKeyword``"""</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_keyword_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataKeywordName</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The value of the ``PublisherMetadataKeyword``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_keyword_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataKeywordValue</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">message_id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The message id of the ``PublisherMetadataKeyword``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_keyword_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataKeywordMessageID</span><span class="p">))</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">PublisherMetadataTask</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">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a PublisherMetadataTask (see https://docs.microsoft.com/en-us/windows/win32/api/winevt/ne-winevt-evt_publisher_metadata_property_id)"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pub_metadata</span><span class="p">,</span> <span class="n">channel_id</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">PublisherMetadataTask</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="bp">self</span><span class="o">.</span><span class="n">pub_metadata</span> <span class="o">=</span> <span class="n">pub_metadata</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_id</span> <span class="o">=</span> <span class="n">channel_id</span>
|
||||
@@ -651,23 +720,27 @@
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The name of the ``PublisherMetadataTask``"""</span>
|
||||
<span class="k">return</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_keyword_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataTaskName</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">value</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The value of the ``PublisherMetadataTask``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_keyword_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataTaskValue</span><span class="p">))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">event_guid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The event GUId of the ``PublisherMetadataTask``"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_query_keyword_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataTaskEventGuid</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">message_id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The message ID GUId of the ``PublisherMetadataTask``"""</span>
|
||||
<span class="k">return</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_query_keyword_metadata_property</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataTaskMessageID</span><span class="p">))</span>
|
||||
|
||||
<div class="viewcode-block" id="EvtPublisher"><a class="viewcode-back" href="../../../evtlog.html#windows.winobject.event_log.EvtPublisher">[docs]</a><span class="k">class</span> <span class="nc">EvtPublisher</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""An Event provider"""</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">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
@@ -678,13 +751,13 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">PublisherMetadata</span><span class="o">.</span><span class="n">from_publisher_name</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> "</span><span class="si">{1}</span><span class="s1">">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PublisherMetadata"><a class="viewcode-back" href="../../../evtlog.html#windows.winobject.event_log.PublisherMetadata">[docs]</a><span class="k">class</span> <span class="nc">PublisherMetadata</span><span class="p">(</span><span class="n">EvtHandle</span><span class="p">):</span>
|
||||
<span class="sd">"""The metadata about an event provider"""</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">handle</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">PublisherMetadata</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="n">handle</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
|
||||
@@ -860,7 +933,7 @@
|
||||
<span class="k">return</span> <span class="n">publishinfo</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EvtPublisherMetadataParameterFilePath</span><span class="p">)</span><span class="o">.</span><span class="n">value</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> "</span><span class="si">{1}</span><span class="s1">">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -1062,7 +1135,7 @@
|
||||
<span class="n">publisher</span><span class="o">.</span><span class="n">metadata</span> <span class="c1"># Force to retrieve a handle (check channel exists)</span>
|
||||
<span class="k">return</span> <span class="n">publisher</span></div>
|
||||
|
||||
<div class="viewcode-block" id="EvtlogManager.__getitem__"><a class="viewcode-back" href="../../../evtlog.html#windows.winobject.event_log.EvtlogManager.__getitem__">[docs]</a> <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="EvtlogManager.__getitem__"><a class="viewcode-back" href="../../../evtlog.html#windows.winobject.event_log.EvtlogManager.__getitem__">[docs]</a> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="sd">"""Open the Evt Channel/Publisher or Evtx file with ``name``</span>
|
||||
|
||||
<span class="sd"> :rtype: :class:`EvtChannel` or :class:`EvtPublisher` or :class:`EvtFile`</span>
|
||||
@@ -1081,40 +1154,6 @@
|
||||
<span class="c1"># Raise FILE_NOT_FOUND if not found (last chance)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">open_evtx_file</span><span class="p">(</span><span class="n">name</span><span class="p">)</span></div></div>
|
||||
|
||||
|
||||
|
||||
|
||||
<span class="c1"># CHANNAME = "Microsoft-Windows-Windows Firewall With Advanced Security/Firewall"</span>
|
||||
<span class="c1"># CHANNAME = r"Microsoft-Windows-Windows Defender/Operational"</span>
|
||||
|
||||
<span class="c1"># print("Working of channel: <{0}>".format(CHANNAME))</span>
|
||||
|
||||
<span class="c1"># channel = EvtChannel(CHANNAME)</span>
|
||||
<span class="c1"># chanconf = channel.config</span>
|
||||
<span class="c1"># publisher = chanconf.publisher</span>
|
||||
|
||||
<span class="c1"># open publisher metadata</span>
|
||||
|
||||
<span class="c1"># print("Provider is <{0}>".format(publisher.name))</span>
|
||||
|
||||
<span class="c1"># pmd = publisher.metadata</span>
|
||||
<span class="c1"># chansref = pmd.chanrefs</span>
|
||||
|
||||
<span class="c1"># channame_by_value_id = pmd.channel_name_by_id()</span>
|
||||
|
||||
<span class="c1"># for event_metadata in pmd.events_metadata:</span>
|
||||
<span class="c1"># id = event_metadata.id</span>
|
||||
<span class="c1"># if id == 2004:</span>
|
||||
<span class="c1"># print("LOL")</span>
|
||||
<span class="c1"># chan = event_metadata.channel_id</span>
|
||||
<span class="c1"># channame = channame_by_value_id[chan]</span>
|
||||
<span class="c1"># print(" * {0}) {1}".format(id, channame))</span>
|
||||
<span class="c1"># if "unexpected" in pmd.message(event_metadata.message_id).lower():</span>
|
||||
<span class="c1"># print("UNEXPECTED in message :D")</span>
|
||||
|
||||
|
||||
<span class="c1"># query = channel.query(ids=5008)</span>
|
||||
<span class="c1"># evts = list(query)</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
@@ -1147,13 +1186,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,532 @@
|
||||
|
||||
<!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.winobject.event_trace — PythonForWindows 0.6 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" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.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.6 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.winobject.event_trace</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">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span>
|
||||
|
||||
<span class="c1"># Renommer le fichier etw ?</span>
|
||||
|
||||
<span class="n">MAX_ETW_SESSIONS</span> <span class="o">=</span> <span class="mi">64</span>
|
||||
<span class="n">MAX_SESSION_NAME_LEN</span> <span class="o">=</span> <span class="mi">1024</span>
|
||||
<span class="n">MAX_LOGFILE_PATH_LEN</span> <span class="o">=</span> <span class="mi">1024</span>
|
||||
|
||||
<span class="n">MAX_SESSION_NAME_LEN_W</span> <span class="o">=</span> <span class="n">MAX_SESSION_NAME_LEN</span> <span class="o">*</span> <span class="mi">2</span>
|
||||
<span class="n">MAX_LOGFILE_PATH_LEN_W</span> <span class="o">=</span> <span class="n">MAX_LOGFILE_PATH_LEN</span> <span class="o">*</span> <span class="mi">2</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="EventRecord"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EventRecord">[docs]</a><span class="k">class</span> <span class="nc">EventRecord</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EVENT_RECORD</span><span class="p">):</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">tid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Thread ID that provided the event"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">EventHeader</span><span class="o">.</span><span class="n">ThreadId</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">pid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Process ID that provided the event"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">EventHeader</span><span class="o">.</span><span class="n">ProcessId</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">guid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Guid of the Event"""</span>
|
||||
<span class="c1"># Well, this is called "ProviderId" but seems to be the Event GUID</span>
|
||||
<span class="c1"># As a provider can generated multiple event with differents GUID</span>
|
||||
<span class="c1"># And this value reflect EVENT_TRACE_HEADER.Guid passed to TraceEvent</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">EventHeader</span><span class="o">.</span><span class="n">ProviderId</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""ID of the Event"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">EventHeader</span><span class="o">.</span><span class="n">EventDescriptor</span><span class="o">.</span><span class="n">Id</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">opcode</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">EventHeader</span><span class="o">.</span><span class="n">EventDescriptor</span><span class="o">.</span><span class="n">Opcode</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">version</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">EventHeader</span><span class="o">.</span><span class="n">EventDescriptor</span><span class="o">.</span><span class="n">Version</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">level</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">EventHeader</span><span class="o">.</span><span class="n">EventDescriptor</span><span class="o">.</span><span class="n">Level</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">context</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">UserContext</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">py_object</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UserContext</span><span class="p">)</span><span class="o">.</span><span class="n">value</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">user_data</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Event specific data</span>
|
||||
|
||||
<span class="sd"> :type: :class:`str`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UserData</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">UserDataLength</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s2">""</span>
|
||||
<span class="n">dbuf</span> <span class="o">=</span> <span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_char</span> <span class="o">*</span> <span class="bp">self</span><span class="o">.</span><span class="n">UserDataLength</span><span class="p">)</span><span class="o">.</span><span class="n">from_address</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">UserData</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">dbuf</span><span class="p">[:]</span>
|
||||
|
||||
<span class="c1"># def match(self, provider=None, id=None, opcode=None):</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">guid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">EventHeader</span><span class="o">.</span><span class="n">ProviderId</span>
|
||||
<span class="k">return</span> <span class="s2">"""<</span><span class="si">{0}</span><span class="s2"> provider="</span><span class="si">{1}</span><span class="s2">" id=</span><span class="si">{2}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">guid</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="n">PEventRecord</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">EventRecord</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="EventTraceProperties"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EventTraceProperties">[docs]</a><span class="k">class</span> <span class="nc">EventTraceProperties</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EVENT_TRACE_PROPERTIES</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent an Event Trace session that may exist or now. (https://docs.microsoft.com/en-us/windows/win32/api/evntrace/ns-evntrace-event_trace_properties)</span>
|
||||
|
||||
<span class="sd"> This class is widly used by :class:`EtwTrace`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Test: ascii / Use Wchar ?</span>
|
||||
<span class="n">FULL_SIZE</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">gdef</span><span class="o">.</span><span class="n">EVENT_TRACE_PROPERTIES</span><span class="p">)</span> <span class="o">+</span> <span class="n">MAX_SESSION_NAME_LEN_W</span> <span class="o">+</span> <span class="n">MAX_LOGFILE_PATH_LEN_W</span>
|
||||
|
||||
<span class="c1"># def alloc(cls, size) ?</span>
|
||||
<div class="viewcode-block" id="EventTraceProperties.create"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EventTraceProperties.create">[docs]</a> <span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">create</span><span class="p">(</span><span class="bp">cls</span><span class="p">):</span>
|
||||
<span class="sd">"""Initialize a new :class:`EventTraceProperties`"""</span>
|
||||
<span class="n">buff</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="bp">cls</span><span class="p">)(</span><span class="n">size</span><span class="o">=</span><span class="bp">cls</span><span class="o">.</span><span class="n">FULL_SIZE</span><span class="p">)</span>
|
||||
<span class="c1"># ctypes.memset(buff, "\x00", cls.FULL_SIZE)</span>
|
||||
<span class="bp">self</span> <span class="o">=</span> <span class="n">buff</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">Wnode</span><span class="o">.</span><span class="n">BufferSize</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">FULL_SIZE</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">LoggerNameOffset</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="bp">cls</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">LogFileNameOffset</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="bp">cls</span><span class="p">)</span> <span class="o">+</span> <span class="n">MAX_SESSION_NAME_LEN</span>
|
||||
<span class="k">return</span> <span class="bp">self</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_logfilename</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">LogFileNameOffset</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">read_string</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">LogFileNameOffset</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">set_logfilename</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
|
||||
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">LogFileNameOffset</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">filename</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">"</span><span class="se">\x00</span><span class="s2">"</span><span class="p">):</span>
|
||||
<span class="n">filename</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\x00</span><span class="s2">"</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">LogFileNameOffset</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
|
||||
|
||||
<span class="n">logfile</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">get_logfilename</span><span class="p">,</span> <span class="n">set_logfilename</span><span class="p">)</span> <span class="c1">#: The logfile associated with the session</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_logger_name</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">LoggerNameOffset</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">read_string</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">LoggerNameOffset</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">set_logfilename</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">filename</span><span class="p">):</span>
|
||||
<span class="k">assert</span> <span class="bp">self</span><span class="o">.</span><span class="n">LoggerNameOffset</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">filename</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">"</span><span class="se">\x00</span><span class="s2">"</span><span class="p">):</span>
|
||||
<span class="n">filename</span> <span class="o">+=</span> <span class="s2">"</span><span class="se">\x00</span><span class="s2">"</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">current_process</span><span class="o">.</span><span class="n">write_memory</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">addressof</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">LoggerNameOffset</span><span class="p">,</span> <span class="n">filename</span><span class="p">)</span>
|
||||
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="nb">property</span><span class="p">(</span><span class="n">get_logger_name</span><span class="p">,</span> <span class="n">set_logfilename</span><span class="p">)</span> <span class="c1">#: The name of the session</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">guid</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The GUID of the Event Trace session (see ``Wnode.Guid``)"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">Wnode</span><span class="o">.</span><span class="n">Guid</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">id</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The LoggerId if the session (see ``Wnode.HistoricalContext``)"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">Wnode</span><span class="o">.</span><span class="n">HistoricalContext</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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"> name="</span><span class="si">{1}</span><span class="s2">" guid=</span><span class="si">{2}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">guid</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<span class="c1"># GUID setter ?</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">CtxProcess</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">stop</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trace</span> <span class="o">=</span> <span class="n">trace</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">func</span> <span class="o">=</span> <span class="n">func</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">stop</span> <span class="o">=</span> <span class="n">stop</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">timing</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_time</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">now</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">FILETIME</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">GetSystemTimeAsFileTime</span><span class="p">(</span><span class="n">now</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">now</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">timing</span><span class="p">[</span><span class="s2">"begin"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_time</span><span class="p">()</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">timing</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">):</span>
|
||||
<span class="c1"># bad_end = self._get_time()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trace</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">stop</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trace</span><span class="o">.</span><span class="n">stop</span><span class="p">()</span>
|
||||
<span class="c1"># End time after the flush is effective.</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">timing</span><span class="p">[</span><span class="s2">"end"</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_get_time</span><span class="p">()</span>
|
||||
<span class="c1"># print("Trace ctx: fake-end: {0:#x}".format(int(fake_end)))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Trace ctx: begin=</span><span class="si">{0:#x}</span><span class="s2"> | end=</span><span class="si">{1:#x}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timing</span><span class="p">[</span><span class="s2">"begin"</span><span class="p">]),</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timing</span><span class="p">[</span><span class="s2">"end"</span><span class="p">])))</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">trace</span><span class="o">.</span><span class="n">process</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">,</span> <span class="o">**</span><span class="bp">self</span><span class="o">.</span><span class="n">timing</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="EtwTrace"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwTrace">[docs]</a><span class="k">class</span> <span class="nc">EtwTrace</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent an ETW Trace for tracing/processing events"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">logfile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">guid</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">name</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">raw_encode</span><span class="p">(</span><span class="n">name</span><span class="p">)</span> <span class="c1">#: The name of the trace</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">logfile</span> <span class="o">=</span> <span class="n">logfile</span> <span class="c1">#: The logging file of the trace (``None`` means real time trace)</span>
|
||||
<span class="k">if</span> <span class="n">guid</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">guid</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
|
||||
<span class="n">guid</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">GUID</span><span class="o">.</span><span class="n">from_string</span><span class="p">(</span><span class="n">guid</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">guid</span> <span class="o">=</span> <span class="n">guid</span> <span class="c1">#: The guid of the trace</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
|
||||
<div class="viewcode-block" id="EtwTrace.exists"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwTrace.exists">[docs]</a> <span class="k">def</span> <span class="nf">exists</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Return ``True`` if the trace already exist (based on its name)"""</span>
|
||||
<span class="n">prop</span> <span class="o">=</span> <span class="n">EventTraceProperties</span><span class="o">.</span><span class="n">create</span><span class="p">()</span>
|
||||
<span class="k">try</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">ControlTraceA</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">prop</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EVENT_TRACE_CONTROL_QUERY</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_WMI_INSTANCE_NOT_FOUND</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span> <span class="c1"># Not found -> does not exists</span>
|
||||
<span class="k">raise</span> <span class="c1"># Other error -> reraise</span>
|
||||
<span class="k">return</span> <span class="kc">True</span></div>
|
||||
|
||||
<div class="viewcode-block" id="EtwTrace.start"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwTrace.start">[docs]</a> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
<span class="sd">"""Start the tracing"""</span>
|
||||
<span class="n">prop</span> <span class="o">=</span> <span class="n">EventTraceProperties</span><span class="o">.</span><span class="n">create</span><span class="p">()</span>
|
||||
<span class="n">prop</span><span class="o">.</span><span class="n">NumberOfBuffers</span> <span class="o">=</span> <span class="mi">42</span>
|
||||
<span class="n">prop</span><span class="o">.</span><span class="n">EnableFlags</span> <span class="o">=</span> <span class="n">flags</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">guid</span><span class="p">:</span>
|
||||
<span class="n">prop</span><span class="o">.</span><span class="n">Wnode</span><span class="o">.</span><span class="n">Guid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">guid</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">logfile</span><span class="p">:</span>
|
||||
<span class="n">prop</span><span class="o">.</span><span class="n">logfile</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">logfile</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="c1"># Base REAL_TIME on option ? name presence ? logfile presence ?</span>
|
||||
<span class="n">prop</span><span class="o">.</span><span class="n">LogFileMode</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EVENT_TRACE_REAL_TIME_MODE</span>
|
||||
<span class="n">handle</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">TRACEHANDLE</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">StartTraceA</span><span class="p">(</span><span class="n">handle</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">prop</span><span class="p">)</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">guid</span><span class="p">:</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">guid</span> <span class="o">=</span> <span class="n">prop</span><span class="o">.</span><span class="n">Wnode</span><span class="o">.</span><span class="n">Guid</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handle</span> <span class="o">=</span> <span class="n">handle</span></div>
|
||||
|
||||
<div class="viewcode-block" id="EtwTrace.stop"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwTrace.stop">[docs]</a> <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">soft</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> <span class="c1"># Change name</span>
|
||||
<span class="sd">"""stop the tracing.</span>
|
||||
|
||||
<span class="sd"> ``soft`` will allow to stop a non-existing trace that do not exists/run.</span>
|
||||
<span class="sd"> This allow for simpler script that stop/start some EtwTrace.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">prop</span> <span class="o">=</span> <span class="n">EventTraceProperties</span><span class="o">.</span><span class="n">create</span><span class="p">()</span>
|
||||
<span class="k">try</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">ControlTraceA</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">prop</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EVENT_TRACE_CONTROL_STOP</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="n">soft</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_WMI_INSTANCE_NOT_FOUND</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="k">return</span> <span class="kc">True</span></div>
|
||||
|
||||
<div class="viewcode-block" id="EtwTrace.flush"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwTrace.flush">[docs]</a> <span class="k">def</span> <span class="nf">flush</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Flush the trace"""</span>
|
||||
<span class="n">prop</span> <span class="o">=</span> <span class="n">EventTraceProperties</span><span class="o">.</span><span class="n">create</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">ControlTraceA</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">prop</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EVENT_TRACE_CONTROL_FLUSH</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="EtwTrace.enable"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwTrace.enable">[docs]</a> <span class="k">def</span> <span class="nf">enable</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">guid</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mh">0xff</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mh">0xff</span><span class="p">):</span>
|
||||
<span class="sd">"""Enable the specified event trace provider."""</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">guid</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
|
||||
<span class="n">guid</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">GUID</span><span class="o">.</span><span class="n">from_string</span><span class="p">(</span><span class="n">guid</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">EnableTrace</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">flags</span><span class="p">,</span> <span class="n">level</span><span class="p">,</span> <span class="n">guid</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">)</span> <span class="c1"># EnableTraceEx ?</span></div>
|
||||
|
||||
<div class="viewcode-block" id="EtwTrace.enable_ex"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwTrace.enable_ex">[docs]</a> <span class="k">def</span> <span class="nf">enable_ex</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">guid</span><span class="p">,</span> <span class="n">flags</span><span class="o">=</span><span class="mh">0xff</span><span class="p">,</span> <span class="n">level</span><span class="o">=</span><span class="mh">0xff</span><span class="p">,</span> <span class="n">any_keyword</span> <span class="o">=</span> <span class="mh">0xffffffff</span><span class="p">,</span> <span class="n">all_keyword</span><span class="o">=</span><span class="mh">0x00</span><span class="p">):</span>
|
||||
<span class="sd">"""Enable the specified event trace provider."""</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">guid</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
|
||||
<span class="n">guid</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">GUID</span><span class="o">.</span><span class="n">from_string</span><span class="p">(</span><span class="n">guid</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># TODO : implement EnableParameters</span>
|
||||
<span class="n">EVENT_CONTROL_CODE_ENABLE_PROVIDER</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
|
||||
<span class="c1"># EnableTraceEx only accept a UCHAR for the level param</span>
|
||||
<span class="c1"># TODO : maybe raise an Exception instead of silently masking the value ?</span>
|
||||
<span class="n">level</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">UCHAR</span><span class="p">(</span><span class="nb">chr</span><span class="p">(</span><span class="n">level</span> <span class="o">&</span> <span class="mh">0xff</span><span class="p">))</span>
|
||||
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">EnableTraceEx2</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">guid</span><span class="p">,</span> <span class="n">EVENT_CONTROL_CODE_ENABLE_PROVIDER</span><span class="p">,</span> <span class="n">level</span> <span class="p">,</span> <span class="n">any_keyword</span><span class="p">,</span> <span class="n">all_keyword</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="EtwTrace.process"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwTrace.process">[docs]</a> <span class="k">def</span> <span class="nf">process</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">callback</span><span class="p">,</span> <span class="n">begin</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">end</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Process the event retrieved by the trace.</span>
|
||||
<span class="sd"> This function will call ``callback`` with any :class:`EventRecord` in the trace.</span>
|
||||
<span class="sd"> ``begin/end`` allow to filter and only process events in a given timeframe.</span>
|
||||
|
||||
<span class="sd"> .. warning::</span>
|
||||
|
||||
<span class="sd"> If the trace if ``REALTIME`` (no logfile) this function will hang/process new event until the trace is stopped.</span>
|
||||
|
||||
<span class="sd"> Using ``logman -ets stop TRACE_NAME`` for exemple.</span>
|
||||
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="n">end</span> <span class="o">==</span> <span class="s2">"now"</span><span class="p">:</span>
|
||||
<span class="n">end</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">FILETIME</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">GetSystemTimeAsFileTime</span><span class="p">(</span><span class="n">end</span><span class="p">)</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">sprint</span><span class="p">(</span><span class="n">end</span><span class="p">)</span>
|
||||
|
||||
<span class="n">logfile</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">EVENT_TRACE_LOGFILEW</span><span class="p">()</span>
|
||||
<span class="n">logfile</span><span class="o">.</span><span class="n">LoggerName</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">raw_decode</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="c1"># logfile.ProcessTraceMode = gdef.PROCESS_TRACE_MODE_EVENT_RECORD | gdef.PROCESS_TRACE_MODE_RAW_TIMESTAMP</span>
|
||||
<span class="n">logfile</span><span class="o">.</span><span class="n">ProcessTraceMode</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESS_TRACE_MODE_EVENT_RECORD</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">logfile</span><span class="p">:</span>
|
||||
<span class="n">logfile</span><span class="o">.</span><span class="n">ProcessTraceMode</span> <span class="o">|=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PROCESS_TRACE_MODE_REAL_TIME</span>
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="c1"># logfile.ProcessTraceMode |= gdef.PROCESS_TRACE_MODE_REAL_TIME</span>
|
||||
<span class="n">logfile</span><span class="o">.</span><span class="n">LogFileName</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">logfile</span>
|
||||
|
||||
<span class="k">if</span> <span class="n">context</span><span class="p">:</span>
|
||||
<span class="n">context_ptr</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">pointer</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">py_object</span><span class="p">(</span><span class="n">context</span><span class="p">))</span>
|
||||
<span class="n">logfile</span><span class="o">.</span><span class="n">Context</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">context_ptr</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">PVOID</span><span class="p">,</span> <span class="n">PEventRecord</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">real_callback</span><span class="p">(</span><span class="n">record_ptr</span><span class="p">):</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">callback</span><span class="p">(</span><span class="n">record_ptr</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
|
||||
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"CALLBACK ERROR: </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">e</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="mi">1</span>
|
||||
<span class="k">if</span> <span class="n">x</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
<span class="k">return</span> <span class="n">x</span>
|
||||
|
||||
<span class="nd">@ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">PVOID</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PEVENT_TRACE_LOGFILEW</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">buffer_callback</span><span class="p">(</span><span class="n">trace</span><span class="p">):</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Buffer-callback: event-lost=</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">trace</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">LogfileHeader</span><span class="o">.</span><span class="n">EventsLost</span><span class="p">))</span>
|
||||
<span class="nb">print</span><span class="p">(</span><span class="s2">"Buffer-callback: buffer-lost=</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">trace</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">LogfileHeader</span><span class="o">.</span><span class="n">BuffersLost</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="kc">True</span>
|
||||
|
||||
<span class="n">logfile</span><span class="o">.</span><span class="n">EventRecordCallback</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">real_callback</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">PVOID</span><span class="p">)</span>
|
||||
<span class="c1"># logfile.BufferCallback = ctypes.cast(buffer_callback, gdef.PVOID)</span>
|
||||
<span class="n">r</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">OpenTraceW</span><span class="p">(</span><span class="n">logfile</span><span class="p">)</span>
|
||||
<span class="n">rh</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">TRACEHANDLE</span><span class="p">(</span><span class="n">r</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">ProcessTrace</span><span class="p">(</span><span class="n">rh</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">CtxProcess</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">stop</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">CtxProcess</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func</span><span class="p">,</span> <span class="n">stop</span><span class="o">=</span><span class="n">stop</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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"> name=</span><span class="si">{1!r}</span><span class="s2"> logfile=</span><span class="si">{2!r}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">logfile</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">class</span> <span class="nc">TraceProvider</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a ETW provider, which is just a GUID.</span>
|
||||
<span class="sd"> Corresponding name for a provider may be available trhought WMI.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">guid</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">guid</span> <span class="o">=</span> <span class="n">guid</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">infos</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The :class:`TraceGuidInfo` associated with the provider.</span>
|
||||
<span class="sd"> Main use is to retrieve the instances of the provider (directly available with ``instances``)</span>
|
||||
|
||||
<span class="sd"> :type: :class:`TraceGuidInfo`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">size</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">()</span>
|
||||
<span class="n">info_buffer</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_buffer</span><span class="p">(</span><span class="mh">0x1000</span><span class="p">)</span>
|
||||
<span class="k">try</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">EnumerateTraceGuidsEx</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TraceGuidQueryInfo</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">guid</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="bp">self</span><span class="o">.</span><span class="n">guid</span><span class="p">),</span> <span class="n">info_buffer</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">info_buffer</span><span class="p">),</span> <span class="n">size</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ERROR_INSUFFICIENT_BUFFER</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="c1"># Buffer to small</span>
|
||||
<span class="n">info_buffer</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_buffer</span><span class="p">(</span><span class="n">size</span><span class="o">.</span><span class="n">value</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">EnumerateTraceGuidsEx</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TraceGuidQueryInfo</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">guid</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="bp">self</span><span class="o">.</span><span class="n">guid</span><span class="p">),</span> <span class="n">info_buffer</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">info_buffer</span><span class="p">),</span> <span class="n">size</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">TraceGuidInfo</span><span class="o">.</span><span class="n">from_raw_buffer</span><span class="p">(</span><span class="n">info_buffer</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># We dont really care about the C struct layout</span>
|
||||
<span class="c1"># Our trace providers should be able to directly returns its instances</span>
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">instances</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The instances of the provider.</span>
|
||||
|
||||
<span class="sd"> :type: [:class:`TraceProviderInstanceInfo`] -- A list of :class:`TraceProviderInstanceInfo`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">infos</span><span class="o">.</span><span class="n">instances</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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"> for "</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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">guid</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">TraceGuidInfo</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TRACE_GUID_INFO</span><span class="p">):</span>
|
||||
<span class="sd">"""Defines the header to the list of sessions that enabled the provider</span>
|
||||
<span class="sd"> (see https://docs.microsoft.com/en-us/windows/win32/api/evntrace/ns-evntrace-trace_guid_info)</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">from_raw_buffer</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">buffer</span><span class="p">):</span>
|
||||
<span class="bp">self</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_buffer</span><span class="p">(</span><span class="n">buffer</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_raw_buffer_</span> <span class="o">=</span> <span class="n">buffer</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_instance_generator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">InstanceCount</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="n">abs_offset</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="bp">self</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">InstanceCount</span><span class="p">):</span>
|
||||
<span class="n">instance</span> <span class="o">=</span> <span class="n">TraceProviderInstanceInfo</span><span class="o">.</span><span class="n">from_raw_buffer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_raw_buffer_</span><span class="p">,</span> <span class="n">abs_offset</span><span class="p">)</span>
|
||||
<span class="n">abs_offset</span> <span class="o">+=</span> <span class="n">instance</span><span class="o">.</span><span class="n">NextOffset</span>
|
||||
<span class="k">yield</span> <span class="n">instance</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">instances</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The instances of the provider.</span>
|
||||
|
||||
<span class="sd"> :type: [:class:`TraceProviderInstanceInfo`] -- A list of :class:`TraceProviderInstanceInfo`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_instance_generator</span><span class="p">()]</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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"> InstanceCount=</span><span class="si">{1}</span><span class="s2"> Reserved=</span><span class="si">{2}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">InstanceCount</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Reserved</span><span class="p">)</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">TraceProviderInstanceInfo</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TRACE_PROVIDER_INSTANCE_INFO</span><span class="p">):</span>
|
||||
<span class="sd">"""Defines an instance of the provider</span>
|
||||
<span class="sd"> (see https://docs.microsoft.com/en-us/windows/win32/api/evntrace/ns-evntrace-trace_provider_instance_info)</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="nd">@classmethod</span>
|
||||
<span class="k">def</span> <span class="nf">from_raw_buffer</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="n">offset</span><span class="p">):</span>
|
||||
<span class="bp">self</span> <span class="o">=</span> <span class="bp">cls</span><span class="o">.</span><span class="n">from_buffer</span><span class="p">(</span><span class="n">buffer</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_offset</span> <span class="o">=</span> <span class="n">offset</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_raw_buffer_</span> <span class="o">=</span> <span class="n">buffer</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_instance_generator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">offset</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_offset</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="bp">self</span><span class="p">)</span>
|
||||
<span class="n">entry_size</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">gdef</span><span class="o">.</span><span class="n">TRACE_ENABLE_INFO</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">EnableCount</span><span class="p">):</span>
|
||||
<span class="k">yield</span> <span class="n">gdef</span><span class="o">.</span><span class="n">TRACE_ENABLE_INFO</span><span class="o">.</span><span class="n">from_buffer</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_raw_buffer_</span><span class="p">,</span> <span class="n">offset</span><span class="p">)</span>
|
||||
<span class="n">offset</span> <span class="o">+=</span> <span class="n">entry_size</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">sessions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The sessions for the instance</span>
|
||||
|
||||
<span class="sd"> :type: [:class:`~windows.generated_def.winstructs.TRACE_ENABLE_INFO`] -- A list of session</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">x</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_instance_generator</span><span class="p">()]</span>
|
||||
|
||||
<span class="k">def</span> <span class="fm">__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"> Pid=</span><span class="si">{1}</span><span class="s2"> EnableCount=</span><span class="si">{2}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Pid</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EnableCount</span><span class="p">)</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="EtwManager"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwManager">[docs]</a><span class="k">class</span> <span class="nc">EtwManager</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""An object to query ETW session/providers and open new trace"""</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">sessions</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The list of currently active ETW session.</span>
|
||||
|
||||
<span class="sd"> :type: [:class:`EventTraceProperties`] -- A list of :class:`EventTraceProperties`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="c1"># Create a tuple of MAX_ETW_SESSIONS EventTraceProperties ptr</span>
|
||||
<span class="n">t</span> <span class="o">=</span> <span class="p">[</span><span class="n">EventTraceProperties</span><span class="o">.</span><span class="n">create</span><span class="p">()</span> <span class="k">for</span> <span class="n">_</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">MAX_ETW_SESSIONS</span><span class="p">)]</span>
|
||||
<span class="c1"># Put this in a ctypes array</span>
|
||||
<span class="n">array</span> <span class="o">=</span> <span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">EventTraceProperties</span><span class="p">)</span> <span class="o">*</span> <span class="n">MAX_ETW_SESSIONS</span><span class="p">)(</span><span class="o">*</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">pointer</span><span class="p">(</span><span class="n">e</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">t</span><span class="p">))</span>
|
||||
<span class="c1"># Cast as array/ptr does not handle subtypes very-well</span>
|
||||
<span class="n">tarray</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">array</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">EVENT_TRACE_PROPERTIES</span><span class="p">)))</span>
|
||||
<span class="n">count</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</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">QueryAllTracesA</span><span class="p">(</span><span class="n">tarray</span><span class="p">,</span> <span class="n">MAX_ETW_SESSIONS</span><span class="p">,</span> <span class="n">count</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">t</span><span class="p">[:</span><span class="n">count</span><span class="o">.</span><span class="n">value</span><span class="p">]</span>
|
||||
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">providers</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The list of currently existing ETW providers.</span>
|
||||
|
||||
<span class="sd"> :type: [:class:`TraceProvider`] -- A list of ETW providers</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">buffer</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">GUID</span><span class="p">,</span> <span class="mh">0x1000</span><span class="p">)()</span>
|
||||
<span class="n">size</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</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">EnumerateTraceGuidsEx</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TraceGuidQueryList</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">buffer</span><span class="p">,</span> <span class="n">buffer</span><span class="o">.</span><span class="n">real_size</span><span class="p">,</span> <span class="n">size</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">TraceProvider</span><span class="p">(</span><span class="n">g</span><span class="p">)</span> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="n">buffer</span><span class="p">[:</span><span class="n">size</span><span class="o">.</span><span class="n">value</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">gdef</span><span class="o">.</span><span class="n">GUID</span><span class="p">)]]</span>
|
||||
|
||||
|
||||
<span class="c1"># Temp name / API ?</span>
|
||||
<div class="viewcode-block" id="EtwManager.open_trace"><a class="viewcode-back" href="../../../etw.html#windows.winobject.event_trace.EtwManager.open_trace">[docs]</a> <span class="k">def</span> <span class="nf">open_trace</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">logfile</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">guid</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Open a new ETW Trace</span>
|
||||
|
||||
<span class="sd"> :return: :class:`EtwTrace`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">EtwTrace</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">logfile</span><span class="p">,</span> <span class="n">guid</span><span class="p">)</span></div></div>
|
||||
</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.6 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-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+16
-13
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.exception — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.exception — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -39,7 +42,7 @@
|
||||
<h1>Source code for windows.winobject.exception</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">windows</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.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def.windef</span> <span class="k">as</span> <span class="nn">windef</span>
|
||||
|
||||
<span class="n">EXCEPTION_CONTINUE_SEARCH</span> <span class="o">=</span> <span class="p">(</span><span class="mh">0x0</span><span class="p">)</span>
|
||||
@@ -175,7 +178,7 @@
|
||||
<span class="n">res</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"|"</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">res</span><span class="p">)</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">hex</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__hex__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
@@ -369,7 +372,7 @@
|
||||
<span class="sd">"""A decorator that create a callable which can be passed to :func:`AddVectoredExceptionHandler`"""</span>
|
||||
<span class="n">func_type</span> <span class="o">=</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">WINFUNCTYPE</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_uint</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">POINTER</span><span class="p">(</span><span class="n">EEXCEPTION_POINTERS</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</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__new__</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">func</span><span class="p">):</span>
|
||||
<span class="bp">self</span> <span class="o">=</span> <span class="nb">object</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="bp">self</span><span class="o">.</span><span class="n">func</span> <span class="o">=</span> <span class="n">func</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">func_type</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">decorator</span><span class="p">)</span>
|
||||
@@ -387,20 +390,20 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">VectoredExceptionHandler</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">pos</span><span class="p">,</span> <span class="n">handler</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pos</span><span class="p">,</span> <span class="n">handler</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">handler</span> <span class="o">=</span> <span class="n">VectoredException</span><span class="p">(</span><span class="n">handler</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">pos</span> <span class="o">=</span> <span class="n">pos</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">AddVectoredExceptionHandler</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">pos</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">handler</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_value</span><span class="p">,</span> <span class="n">traceback</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">RemoveVectoredExceptionHandler</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="kc">False</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">DumpContextOnException</span><span class="p">(</span><span class="n">VectoredExceptionHandler</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">exit</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exit</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">exit</span> <span class="o">=</span> <span class="n">exit</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">DumpContextOnException</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="bp">self</span><span class="o">.</span><span class="n">print_context_result</span><span class="p">)</span>
|
||||
|
||||
@@ -444,13 +447,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+13
-10
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.handle — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.handle — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -41,8 +44,8 @@
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="k">import</span> <span class="n">windef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="kn">import</span> <span class="n">windef</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
<span class="n">current_process_pid</span> <span class="o">=</span> <span class="n">os</span><span class="o">.</span><span class="n">getpid</span><span class="p">()</span>
|
||||
@@ -146,10 +149,10 @@
|
||||
<span class="k">del</span> <span class="n">thread</span><span class="o">.</span><span class="n">_handle</span>
|
||||
<span class="k">return</span> <span class="n">res</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">def</span> <span class="fm">__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"> value=<0x</span><span class="si">{1:x}</span><span class="s2">> in process pid=</span><span class="si">{2}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">wValue</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">dwProcessId</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dwProcessId</span> <span class="o">==</span> <span class="n">current_process_pid</span><span class="p">:</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s2">"_local_handle"</span><span class="p">):</span>
|
||||
@@ -262,13 +265,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+16
-13
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.network — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.network — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -42,11 +45,11 @@
|
||||
<span class="kn">import</span> <span class="nn">socket</span>
|
||||
<span class="kn">import</span> <span class="nn">struct</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.com</span> <span class="k">import</span> <span class="n">interfaces</span> <span class="k">as</span> <span class="n">cominterfaces</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">from</span> <span class="nn">windows.com</span> <span class="kn">import</span> <span class="n">interfaces</span> <span class="k">as</span> <span class="n">cominterfaces</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.windef</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TCP4Connection"><a class="viewcode-back" href="../../../network.html#windows.winobject.network.TCP4Connection">[docs]</a><span class="k">class</span> <span class="nc">TCP4Connection</span><span class="p">(</span><span class="n">MIB_TCPROW_OWNER_PID</span><span class="p">):</span>
|
||||
@@ -119,7 +122,7 @@
|
||||
<span class="n">closing</span><span class="o">.</span><span class="n">dwRemotePort</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">dwRemotePort</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">SetTcpEntry</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">byref</span><span class="p">(</span><span class="n">closing</span><span class="p">))</span></div>
|
||||
|
||||
<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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">established</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"<TCP IPV4 Listening socket on </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">local_addr</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_port</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"<TCP IPV4 Connection </span><span class="si">{s.local_addr}</span><span class="s2">:</span><span class="si">{s.local_port}</span><span class="s2"> -> </span><span class="si">{s.remote_addr}</span><span class="s2">:</span><span class="si">{s.remote_port}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">s</span><span class="o">=</span><span class="bp">self</span><span class="p">)</span></div>
|
||||
@@ -177,7 +180,7 @@
|
||||
<span class="k">def</span> <span class="nf">close</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">raise</span> <span class="ne">NotImplementedError</span><span class="p">(</span><span class="s2">"Closing IPV6 connection non implemented"</span><span class="p">)</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">established</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"<TCP IPV6 Listening socket on </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">local_addr</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_port</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="s2">"<TCP IPV6 Connection </span><span class="si">{0}</span><span class="s2">:</span><span class="si">{1}</span><span class="s2"> -> </span><span class="si">{2}</span><span class="s2">:</span><span class="si">{3}</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">local_addr</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">local_port</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">remote_addr</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">remote_port</span><span class="p">)</span></div>
|
||||
@@ -432,7 +435,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">get_RemotePorts</span><span class="p">(</span><span class="n">icmp_type_and_code</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">icmp_type_and_code</span><span class="o">.</span><span class="n">value</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="sa">u</span><span class="s1">'<</span><span class="si">{0}</span><span class="s1"> "</span><span class="si">{1}</span><span class="s1">">'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s2">"ascii"</span><span class="p">,</span> <span class="n">errors</span><span class="o">=</span><span class="s1">'backslashreplace'</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Network"><a class="viewcode-back" href="../../../network.html#windows.winobject.network.Network">[docs]</a><span class="k">class</span> <span class="nc">Network</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
@@ -516,13 +519,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+24
-14
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.object_manager — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.object_manager — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -39,10 +42,10 @@
|
||||
<h1>Source code for windows.winobject.object_manager</h1><div class="highlight"><pre>
|
||||
<span></span><span class="kn">import</span> <span class="nn">os.path</span>
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
|
||||
@@ -59,13 +62,20 @@
|
||||
<span class="n">x</span> <span class="o">=</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">NtOpenSymbolicLinkObject</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DIRECTORY_QUERY</span> <span class="o">|</span> <span class="n">gdef</span><span class="o">.</span><span class="n">READ_CONTROL</span> <span class="p">,</span> <span class="n">obj_attr</span><span class="p">)</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LSA_UNICODE_STRING</span><span class="o">.</span><span class="n">from_size</span><span class="p">(</span><span class="mi">1000</span><span class="p">)</span>
|
||||
<span class="n">s</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">ULONG</span><span class="p">()</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">NtQuerySymbolicLinkObject</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span> <span class="c1"># Handle Buffer-too-small ?</span>
|
||||
<span class="k">try</span><span class="p">:</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">NtQuerySymbolicLinkObject</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">&</span> <span class="mh">0xffffffff</span><span class="p">)</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">STATUS_BUFFER_TOO_SMALL</span><span class="p">:</span>
|
||||
<span class="k">raise</span>
|
||||
<span class="c1"># If our initial 1000 buffer is not enought (improbable) retry with correct size</span>
|
||||
<span class="n">v</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">LSA_UNICODE_STRING</span><span class="o">.</span><span class="n">from_size</span><span class="p">(</span><span class="n">s</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">NtQuerySymbolicLinkObject</span><span class="p">(</span><span class="n">res</span><span class="p">,</span> <span class="n">v</span><span class="p">,</span> <span class="n">s</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">v</span><span class="o">.</span><span class="n">str</span>
|
||||
|
||||
|
||||
<div class="viewcode-block" id="KernelObject"><a class="viewcode-back" href="../../../object_manager.html#windows.winobject.object_manager.KernelObject">[docs]</a><span class="k">class</span> <span class="nc">KernelObject</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent an object in the Object Manager namespace"""</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">path</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="nb">type</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">path</span> <span class="o">=</span> <span class="n">path</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="k">if</span> <span class="n">path</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">path</span><span class="o">.</span><span class="n">endswith</span><span class="p">(</span><span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">):</span>
|
||||
@@ -170,7 +180,7 @@
|
||||
<span class="k">break</span>
|
||||
<span class="k">yield</span> <span class="n">v</span><span class="o">.</span><span class="n">Name</span><span class="o">.</span><span class="n">str</span><span class="p">,</span> <span class="n">v</span><span class="o">.</span><span class="n">TypeName</span><span class="o">.</span><span class="n">str</span>
|
||||
|
||||
<div class="viewcode-block" id="KernelObject.__iter__"><a class="viewcode-back" href="../../../object_manager.html#windows.winobject.object_manager.KernelObject.__iter__">[docs]</a> <span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="KernelObject.__iter__"><a class="viewcode-back" href="../../../object_manager.html#windows.winobject.object_manager.KernelObject.__iter__">[docs]</a> <span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Iter over the list of name in the Directory object.</span>
|
||||
|
||||
<span class="sd"> :yield: :class:`str` -- The names of objects in the directory.</span>
|
||||
@@ -183,7 +193,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="nb">type</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_directory_query_generator</span><span class="p">())</span></div>
|
||||
|
||||
<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">def</span> <span class="fm">__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">" (type="</span><span class="si">{2}</span><span class="s2">")>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fullname</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="KernelObject.get"><a class="viewcode-back" href="../../../object_manager.html#windows.winobject.object_manager.KernelObject.get">[docs]</a> <span class="k">def</span> <span class="nf">get</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
@@ -196,7 +206,7 @@
|
||||
<span class="k">return</span> <span class="n">KernelObject</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">fullname</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">objtype</span><span class="p">)</span>
|
||||
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="s2">"Could not find WinObject <</span><span class="si">{0}</span><span class="s2">> under <</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">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">fullname</span><span class="p">))</span></div>
|
||||
|
||||
<div class="viewcode-block" id="KernelObject.__getitem__"><a class="viewcode-back" href="../../../object_manager.html#windows.winobject.object_manager.KernelObject.__getitem__">[docs]</a> <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="KernelObject.__getitem__"><a class="viewcode-back" href="../../../object_manager.html#windows.winobject.object_manager.KernelObject.__getitem__">[docs]</a> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="sd">"""Query object ``name`` from the directory, split and subquery on ``\\``::</span>
|
||||
|
||||
<span class="sd"> >>> obj</span>
|
||||
@@ -246,7 +256,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">KernelObject</span><span class="p">(</span><span class="s2">""</span><span class="p">,</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span><span class="p">,</span> <span class="s2">"Directory"</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="ObjectManager.__getitem__"><a class="viewcode-back" href="../../../object_manager.html#windows.winobject.object_manager.ObjectManager.__getitem__">[docs]</a> <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="ObjectManager.__getitem__"><a class="viewcode-back" href="../../../object_manager.html#windows.winobject.object_manager.ObjectManager.__getitem__">[docs]</a> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="sd">"""Query ``name`` from the root ``\\`` directory::</span>
|
||||
|
||||
<span class="sd"> object_manager["RPC Control"]["lsasspirpc"]</span>
|
||||
@@ -288,13 +298,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+33
-30
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.process — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.process — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -45,8 +48,8 @@
|
||||
<span class="kn">import</span> <span class="nn">struct</span>
|
||||
<span class="kn">import</span> <span class="nn">itertools</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="k">import</span> <span class="n">contextmanager</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">contextmanager</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.native_exec.simple_x86</span> <span class="k">as</span> <span class="nn">x86</span>
|
||||
@@ -54,21 +57,21 @@
|
||||
<span class="kn">import</span> <span class="nn">windows.remotectypes</span> <span class="k">as</span> <span class="nn">rctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">injection</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">native_exec</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">pe_parse</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="k">import</span> <span class="n">dbgprint</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.ntstatus</span> <span class="k">import</span> <span class="n">NtStatusException</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">injection</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">native_exec</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">pe_parse</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="kn">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def.ntstatus</span> <span class="kn">import</span> <span class="n">NtStatusException</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">exception</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">apisetmap</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">token</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">security</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">exception</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">apisetmap</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">token</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">security</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="k">import</span> <span class="n">raw_encode</span><span class="p">,</span> <span class="n">raw_decode</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">raw_encode</span><span class="p">,</span> <span class="n">raw_decode</span><span class="p">,</span> <span class="n">basestring</span>
|
||||
|
||||
<span class="n">TimeInfo</span> <span class="o">=</span> <span class="n">namedtuple</span><span class="p">(</span><span class="s2">"TimeInfo"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"creation"</span><span class="p">,</span> <span class="s2">"exit"</span><span class="p">,</span> <span class="s2">"kernel"</span><span class="p">,</span> <span class="s2">"user"</span><span class="p">])</span>
|
||||
<span class="sd">"""Time information about a process"""</span>
|
||||
@@ -76,7 +79,7 @@
|
||||
|
||||
<div class="viewcode-block" id="DeadThread"><a class="viewcode-back" href="../../../process.html#windows.winobject.process.DeadThread">[docs]</a><span class="k">class</span> <span class="nc">DeadThread</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">AutoHandle</span><span class="p">):</span>
|
||||
<span class="sd">"""An already dead thread (returned only by API returning a new thread if thread die before being returned)"""</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">handle</span><span class="p">,</span> <span class="n">tid</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="n">tid</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">tid</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">tid</span> <span class="o">=</span> <span class="n">WinThread</span><span class="o">.</span><span class="n">_get_thread_id</span><span class="p">(</span><span class="n">handle</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">tid</span> <span class="o">=</span> <span class="n">tid</span>
|
||||
@@ -548,7 +551,7 @@
|
||||
<span class="n">pid</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">pid</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">h</span> <span class="k">for</span> <span class="n">h</span> <span class="ow">in</span> <span class="n">windows</span><span class="o">.</span><span class="n">system</span><span class="o">.</span><span class="n">handles</span> <span class="k">if</span> <span class="n">h</span><span class="o">.</span><span class="n">dwProcessId</span> <span class="o">==</span> <span class="n">pid</span><span class="p">]</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">Process</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="fm">__del__</span><span class="p">()</span>
|
||||
<span class="c1"># Same logic that AutoHandle.__del__ for Process.limited_handle</span>
|
||||
<span class="c1"># Assert that Process inherit AutoHandle</span>
|
||||
@@ -617,7 +620,7 @@
|
||||
<span class="k">def</span> <span class="nf">_get_handle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">GetCurrentThread</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<div class="viewcode-block" id="CurrentThread.exit"><a class="viewcode-back" href="../../../process.html#windows.winobject.process.CurrentThread.exit">[docs]</a> <span class="k">def</span> <span class="nf">exit</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">code</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
|
||||
@@ -668,7 +671,7 @@
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">GetCurrentProcess</span><span class="p">()</span>
|
||||
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
@@ -774,7 +777,7 @@
|
||||
<div class="viewcode-block" id="WinThread"><a class="viewcode-back" href="../../../process.html#windows.winobject.process.WinThread">[docs]</a><span class="k">class</span> <span class="nc">WinThread</span><span class="p">(</span><span class="n">Thread</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a thread """</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">tid</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">owner_pid</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">owner</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">tid</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">owner_pid</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">owner</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">tid</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">handle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Need at least <pid> or <handle> to create a </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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">))</span>
|
||||
|
||||
@@ -953,7 +956,7 @@
|
||||
<span class="n">winproxy</span><span class="o">.</span><span class="n">GetExitCodeThread</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">byref</span><span class="p">(</span><span class="n">res</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="n">res</span><span class="o">.</span><span class="n">value</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">owner</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">owner</span>
|
||||
<span class="k">if</span> <span class="n">owner</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="n">owner_name</span> <span class="o">=</span> <span class="s2">"<Dead process with pid </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="nb">hex</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">th32OwnerProcessID</span><span class="p">))</span>
|
||||
@@ -986,7 +989,7 @@
|
||||
|
||||
<div class="viewcode-block" id="WinProcess"><a class="viewcode-back" href="../../../process.html#windows.winobject.process.WinProcess">[docs]</a><span class="k">class</span> <span class="nc">WinProcess</span><span class="p">(</span><span class="n">Process</span><span class="p">):</span>
|
||||
<span class="sd">"""A Process on the system"""</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">pid</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppid</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">pid</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">ppid</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">pid</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">and</span> <span class="n">handle</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"Need at least <pid> or <handle> to create a </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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">))</span>
|
||||
|
||||
@@ -1035,7 +1038,7 @@
|
||||
<span class="k">def</span> <span class="nf">_get_handle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">winproxy</span><span class="o">.</span><span class="n">OpenProcess</span><span class="p">(</span><span class="n">dwProcessId</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">pid</span><span class="p">)</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">def</span> <span class="fm">__repr__</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">exe_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span>
|
||||
<span class="k">except</span> <span class="ne">WindowsError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
|
||||
@@ -1260,7 +1263,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">FullDllName</span><span class="o">.</span><span class="n">str</span><span class="o">.</span><span class="n">lower</span><span class="p">()</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<</span><span class="si">{0}</span><span class="s1"> "</span><span class="si">{1}</span><span class="s1">" at </span><span class="si">{2}</span><span class="s1">>'</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="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="nb">hex</span><span class="p">(</span><span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">)))</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
@@ -1588,13 +1591,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+23
-20
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.registry — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.registry — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -41,13 +44,13 @@
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">itertools</span>
|
||||
<span class="kn">import</span> <span class="nn">struct</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span><span class="p">,</span> <span class="n">defaultdict</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span><span class="p">,</span> <span class="n">defaultdict</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="k">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="kn">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="k">import</span> <span class="n">basestring</span><span class="p">,</span> <span class="n">int_types</span><span class="p">,</span> <span class="n">is_py3</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span><span class="p">,</span> <span class="n">int_types</span><span class="p">,</span> <span class="n">is_py3</span>
|
||||
|
||||
<span class="n">WENCODING</span> <span class="o">=</span> <span class="s2">"utf-16-le"</span>
|
||||
|
||||
@@ -57,7 +60,7 @@
|
||||
<span class="k">class</span> <span class="nc">WinRegistryKey</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">HKEY</span><span class="p">):</span>
|
||||
<span class="n">_close_function</span> <span class="o">=</span> <span class="nb">staticmethod</span><span class="p">(</span><span class="n">winproxy</span><span class="o">.</span><span class="n">RegCloseKey</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="n">sys</span> <span class="ow">is</span> <span class="kc">None</span> <span class="ow">or</span> <span class="n">sys</span><span class="o">.</span><span class="n">path</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># Late shutdown (not sur winproxy is still up)</span>
|
||||
<span class="k">return</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="p">:</span> <span class="c1"># Not NULL handle ?</span>
|
||||
@@ -68,13 +71,13 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">ExpectWindowsError</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">errornumber</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">errornumber</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">errornumber</span> <span class="o">=</span> <span class="n">errornumber</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">pass</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">etype</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">tb</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">etype</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="n">tb</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="p">(</span><span class="n">etype</span> <span class="ow">in</span> <span class="p">(</span><span class="n">winproxy</span><span class="o">.</span><span class="n">WinproxyError</span><span class="p">,</span> <span class="ne">WindowsError</span><span class="p">)</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">winerror</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">errornumber</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Translation reg-buffer <-> python methodes</span>
|
||||
@@ -184,7 +187,7 @@
|
||||
|
||||
<div class="viewcode-block" id="PyHKey"><a class="viewcode-back" href="../../../registry.html#windows.winobject.registry.PyHKey">[docs]</a><span class="k">class</span> <span class="nc">PyHKey</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""A windows registry key"""</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">surkey</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">sam</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">KEY_READ</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">surkey</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">sam</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">KEY_READ</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">surkey</span> <span class="o">=</span> <span class="n">surkey</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">fullname</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">surkey</span><span class="o">.</span><span class="n">fullname</span> <span class="o">+</span> <span class="s2">"</span><span class="se">\\</span><span class="s2">"</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="bp">self</span><span class="o">.</span><span class="n">surkey</span><span class="o">.</span><span class="n">name</span>
|
||||
@@ -192,7 +195,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_phkey</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="c1">#self.phkey</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="s1">'<PyHKey "</span><span class="si">{0}</span><span class="s1">">'</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">fullname</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_open_key</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">sam</span><span class="p">):</span>
|
||||
@@ -400,7 +403,7 @@
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="PyHKey.__setitem__"><a class="viewcode-back" href="../../../registry.html#windows.winobject.registry.PyHKey.__setitem__">[docs]</a> <span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="PyHKey.__setitem__"><a class="viewcode-back" href="../../../registry.html#windows.winobject.registry.PyHKey.__setitem__">[docs]</a> <span class="k">def</span> <span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="n">rtype</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">basestring</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="n">int_types</span><span class="p">)):</span>
|
||||
<span class="n">value</span><span class="p">,</span> <span class="n">rtype</span> <span class="o">=</span> <span class="n">value</span>
|
||||
@@ -414,7 +417,7 @@
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">DummyPHKEY</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">phkey</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">phkey</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">phkey</span> <span class="o">=</span> <span class="n">phkey</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
|
||||
@@ -439,7 +442,7 @@
|
||||
<span class="s2">"HKEY_USERS"</span> <span class="p">:</span> <span class="n">HKEY_USERS</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">sam</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">KEY_READ</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">sam</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">KEY_READ</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">sam</span> <span class="o">=</span> <span class="n">sam</span>
|
||||
|
||||
<div class="viewcode-block" id="Registry.reopen"><a class="viewcode-back" href="../../../registry.html#windows.winobject.registry.Registry.reopen">[docs]</a> <span class="nd">@classmethod</span>
|
||||
@@ -450,7 +453,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="bp">cls</span><span class="p">(</span><span class="n">sam</span><span class="p">)</span></div>
|
||||
|
||||
<div class="viewcode-block" id="Registry.__call__"><a class="viewcode-back" href="../../../registry.html#windows.winobject.registry.Registry.__call__">[docs]</a> <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">name</span><span class="p">,</span> <span class="n">sam</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Registry.__call__"><a class="viewcode-back" href="../../../registry.html#windows.winobject.registry.Registry.__call__">[docs]</a> <span class="k">def</span> <span class="fm">__call__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">sam</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Get a registry key::</span>
|
||||
|
||||
<span class="sd"> registry(r"HKEY_LOCAL_MACHINE\\Software")</span>
|
||||
@@ -504,13 +507,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+74
-36
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.service — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.service — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -40,16 +43,16 @@
|
||||
<span></span><span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="k">import</span> <span class="n">contextmanager</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">contextmanager</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">int_types</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">security</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.generated_def</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">security</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span>
|
||||
|
||||
<span class="c1"># TODO: RM :)</span>
|
||||
<span class="n">ServiceStatus</span> <span class="o">=</span> <span class="n">namedtuple</span><span class="p">(</span><span class="s2">"ServiceStatus"</span><span class="p">,</span> <span class="p">[</span><span class="s2">"type"</span><span class="p">,</span> <span class="s2">"state"</span><span class="p">,</span> <span class="s2">"control_accepted"</span><span class="p">,</span> <span class="s2">"flags"</span><span class="p">])</span>
|
||||
<span class="sd">"""</span>
|
||||
<span class="sd">``type`` might be one of:</span>
|
||||
|
||||
@@ -77,20 +80,36 @@
|
||||
<span class="sd">"""</span>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">ServiceManager</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">AutoHandle</span><span class="p">):</span>
|
||||
<span class="n">_close_function</span> <span class="o">=</span> <span class="nb">staticmethod</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">CloseServiceHandle</span><span class="p">)</span>
|
||||
|
||||
<div class="viewcode-block" id="ServiceManager"><a class="viewcode-back" href="../../../service.html#windows.winobject.service.ServiceManager">[docs]</a><span class="k">class</span> <span class="nc">ServiceManager</span><span class="p">(</span><span class="n">utils</span><span class="o">.</span><span class="n">AutoHandle</span><span class="p">):</span>
|
||||
<span class="sd">"""An object to query, list and explore services"""</span>
|
||||
<span class="k">def</span> <span class="nf">_get_handle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">OpenSCManagerA</span><span class="p">(</span><span class="n">dwDesiredAccess</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">MAXIMUM_ALLOWED</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">open_service</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">access</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">MAXIMUM_ALLOWED</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">OpenServiceA</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">access</span><span class="p">)</span> <span class="c1"># Check service exists :)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_service</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">access</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">MAXIMUM_ALLOWED</span><span class="p">):</span>
|
||||
<span class="n">handle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">open_service</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">access</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">NewService</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="n">handle</span><span class="p">)</span>
|
||||
<div class="viewcode-block" id="ServiceManager.get_service"><a class="viewcode-back" href="../../../service.html#windows.winobject.service.ServiceManager.get_service">[docs]</a> <span class="k">def</span> <span class="nf">get_service</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">,</span> <span class="n">access</span><span class="o">=</span><span class="n">gdef</span><span class="o">.</span><span class="n">MAXIMUM_ALLOWED</span><span class="p">):</span>
|
||||
<span class="sd">"""Get a service by its name/index or a list of services via a slice</span>
|
||||
|
||||
<span class="sd"> :return: :class:`Service` or [:class:`Service`] -- A :class:`Service` or list of :class:`Service`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">int_types</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">enumerate_services</span><span class="p">()[</span><span class="n">key</span><span class="p">]</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="nb">slice</span><span class="p">):</span>
|
||||
<span class="c1"># Get service list</span>
|
||||
<span class="n">servlist</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">enumerate_services</span><span class="p">()</span>
|
||||
<span class="c1"># Extract indexes matching the slice</span>
|
||||
<span class="n">indexes</span> <span class="o">=</span> <span class="n">key</span><span class="o">.</span><span class="n">indices</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">servlist</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">servlist</span><span class="p">[</span><span class="n">idx</span><span class="p">]</span> <span class="k">for</span> <span class="n">idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="o">*</span><span class="n">indexes</span><span class="p">)]</span>
|
||||
<span class="c1"># Retrieve service by its name</span>
|
||||
<span class="n">handle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">open_service</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">access</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">Service</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">key</span><span class="p">,</span> <span class="n">handle</span><span class="o">=</span><span class="n">handle</span><span class="p">)</span></div>
|
||||
|
||||
<span class="fm">__getitem__</span> <span class="o">=</span> <span class="n">get_service</span>
|
||||
<span class="sd">"""Get a service by its name/index or a list of services via a slice</span>
|
||||
|
||||
<span class="sd"> :return: :class:`Service` or [:class:`Service`] -- A :class:`Service` or list of :class:`Service`</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_service_display_name</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="c1"># This API is strange..</span>
|
||||
@@ -102,6 +121,9 @@
|
||||
<span class="k">return</span> <span class="n">result</span><span class="o">.</span><span class="n">value</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_enumerate_services_generator</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The generator code behind __iter__.</span>
|
||||
<span class="sd"> Allow to iter over the services on the system</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">size_needed</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">()</span>
|
||||
<span class="n">nb_services</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">()</span>
|
||||
<span class="n">counter</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</span><span class="p">()</span>
|
||||
@@ -121,20 +143,23 @@
|
||||
<span class="n">services_array</span> <span class="o">=</span> <span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">ENUM_SERVICE_STATUS_PROCESSA</span> <span class="o">*</span> <span class="n">nb_services</span><span class="o">.</span><span class="n">value</span><span class="p">)</span><span class="o">.</span><span class="n">from_buffer</span><span class="p">(</span><span class="n">buffer</span><span class="p">)</span>
|
||||
<span class="k">for</span> <span class="n">service_info</span> <span class="ow">in</span> <span class="n">services_array</span><span class="p">:</span>
|
||||
<span class="n">shandle</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">open_service</span><span class="p">(</span><span class="n">service_info</span><span class="o">.</span><span class="n">lpServiceName</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="n">NewService</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">shandle</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">service_info</span><span class="o">.</span><span class="n">lpServiceName</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">service_info</span><span class="o">.</span><span class="n">lpDisplayName</span><span class="p">)</span>
|
||||
<span class="k">yield</span> <span class="n">Service</span><span class="p">(</span><span class="n">handle</span><span class="o">=</span><span class="n">shandle</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="n">service_info</span><span class="o">.</span><span class="n">lpServiceName</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="n">service_info</span><span class="o">.</span><span class="n">lpDisplayName</span><span class="p">)</span>
|
||||
<span class="k">return</span>
|
||||
|
||||
<span class="fm">__iter__</span> <span class="o">=</span> <span class="n">_enumerate_services_generator</span>
|
||||
<span class="sd">"""Iter over the services on the system</span>
|
||||
|
||||
<span class="sd"> :yield: :class:`Service`</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">enumerate_services</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_enumerate_services_generator</span><span class="p">())</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_enumerate_services_generator</span><span class="p">())</span></div>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">NewService</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SC_HANDLE</span><span class="p">):</span>
|
||||
<span class="c1"># close_function = windows.winproxy.CloseServiceHandle</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">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">NewService</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="n">handle</span><span class="p">)</span>
|
||||
<div class="viewcode-block" id="Service"><a class="viewcode-back" href="../../../service.html#windows.winobject.service.Service">[docs]</a><span class="k">class</span> <span class="nc">Service</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SC_HANDLE</span><span class="p">):</span>
|
||||
<span class="sd">"""Represent a service on the system"""</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">description</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">Service</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="n">handle</span><span class="p">)</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
<span class="sd">"""The name of the service</span>
|
||||
|
||||
@@ -153,12 +178,16 @@
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">status</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The status of the service</span>
|
||||
|
||||
<span class="sd"> :type: :class:`~windows.generated_def.winstructs.SERVICE_STATUS_PROCESS`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">buffer</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">BUFFER</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">SERVICE_STATUS_PROCESS</span><span class="p">)()</span>
|
||||
<span class="n">size_needed</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">DWORD</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">QueryServiceStatusEx</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SC_STATUS_PROCESS_INFO</span><span class="p">,</span> <span class="n">buffer</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">LPBYTE</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">buffer</span><span class="p">),</span> <span class="n">size_needed</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">buffer</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="nd">@property</span> <span class="c1"># Can change if service is started/stopped when the object exist</span>
|
||||
<span class="k">def</span> <span class="nf">process</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The process running the service (if any)</span>
|
||||
|
||||
@@ -172,27 +201,36 @@
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">security_descriptor</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The security descriptor of the service</span>
|
||||
|
||||
<span class="sd"> :type: :class:`~windows.security.SecurityDescriptor`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">security</span><span class="o">.</span><span class="n">SecurityDescriptor</span><span class="o">.</span><span class="n">from_service</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Service.start"><a class="viewcode-back" href="../../../service.html#windows.winobject.service.Service.start">[docs]</a> <span class="k">def</span> <span class="nf">start</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="sd">"""Start the service</span>
|
||||
|
||||
<span class="sd"> :param args: a list of :class:`str`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">nbelt</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
<span class="k">if</span> <span class="n">args</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">basestring</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="n">windows</span><span class="o">.</span><span class="n">pycompat</span><span class="o">.</span><span class="n">anybuff</span><span class="p">):</span>
|
||||
<span class="n">args</span> <span class="o">=</span> <span class="p">[</span><span class="n">args</span><span class="p">]</span>
|
||||
<span class="n">nbelt</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="n">args</span> <span class="o">=</span> <span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">LPCSTR</span> <span class="o">*</span> <span class="p">(</span><span class="n">nbelt</span><span class="p">))(</span><span class="o">*</span><span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">StartServiceA</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nbelt</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">StartServiceA</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">nbelt</span><span class="p">,</span> <span class="n">args</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="Service.stop"><a class="viewcode-back" href="../../../service.html#windows.winobject.service.Service.stop">[docs]</a> <span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Stop the service"""</span>
|
||||
<span class="n">status</span> <span class="o">=</span> <span class="n">SERVICE_STATUS</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">ControlService</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SERVICE_CONTROL_STOP</span><span class="p">,</span> <span class="n">status</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">status</span>
|
||||
<span class="k">return</span> <span class="n">status</span></div>
|
||||
|
||||
<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="si">{2}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="o">.</span><span class="n">state</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="fm">__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="si">{2!r}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">status</span><span class="o">.</span><span class="n">state</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">CloseServiceHandle</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="fm">__del__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winproxy</span><span class="o">.</span><span class="n">CloseServiceHandle</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
@@ -225,13 +263,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+46
-25
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.system — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.system — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -43,29 +46,30 @@
|
||||
<span class="kn">import</span> <span class="nn">struct</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
|
||||
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">process</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">network</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">registry</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">exception</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">service</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">volume</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">wmi</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">object_manager</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">handle</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">event_log</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">event_trace</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">task_scheduler</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">system_module</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="k">import</span> <span class="n">bits</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">process</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">network</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">registry</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">exception</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">service</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">volume</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">wmi</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">object_manager</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">device_manager</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">handle</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">event_log</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">event_trace</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">task_scheduler</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">system_module</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.winobject</span> <span class="kn">import</span> <span class="n">bits</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="k">import</span> <span class="n">dbgprint</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.dbgprint</span> <span class="kn">import</span> <span class="n">dbgprint</span>
|
||||
|
||||
<div class="viewcode-block" id="System"><a class="viewcode-back" href="../../../windows.html#windows.winobject.system.System">[docs]</a><span class="k">class</span> <span class="nc">System</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
||||
<span class="sd">"""The state of the current ``Windows`` system ``Python`` is running on"""</span>
|
||||
@@ -102,9 +106,10 @@
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="k">def</span> <span class="nf">services</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""The list of services</span>
|
||||
<span class="sd">"""An object to query, list and explore services</span>
|
||||
|
||||
<span class="sd"> :type: [:class:`~windows.winobject.service.ServiceA`] -- A list of Service"""</span>
|
||||
<span class="sd"> :type: :class:`~windows.winobject.service.ServiceManager`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">service</span><span class="o">.</span><span class="n">ServiceManager</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
@@ -144,10 +149,18 @@
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="k">def</span> <span class="nf">event_log</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""An object to open Event channel/publisher and evtx file</span>
|
||||
|
||||
<span class="sd"> :type: :class:`~windows.winobject.event_log.EvtlogManager`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">event_log</span><span class="o">.</span><span class="n">EvtlogManager</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="k">def</span> <span class="nf">etw</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""An object to interact with ETW (Event Tracing for Windows)</span>
|
||||
|
||||
<span class="sd"> :type: :class:`~windows.winobject.event_trace.EtwManager`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">event_trace</span><span class="o">.</span><span class="n">EtwManager</span><span class="p">()</span>
|
||||
|
||||
|
||||
@@ -174,6 +187,14 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winobject</span><span class="o">.</span><span class="n">object_manager</span><span class="o">.</span><span class="n">ObjectManager</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="k">def</span> <span class="nf">device_manager</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""An object to query the device&driver configured on the computer.</span>
|
||||
|
||||
<span class="sd"> :type: :class:`~windows.winobject.device_manager.DeviceManager`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">winobject</span><span class="o">.</span><span class="n">device_manager</span><span class="o">.</span><span class="n">DeviceManager</span><span class="p">()</span>
|
||||
|
||||
<span class="nd">@utils</span><span class="o">.</span><span class="n">fixedpropety</span>
|
||||
<span class="k">def</span> <span class="nf">bits</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">bits</span><span class="o">.</span><span class="n">create_manager</span><span class="p">()</span>
|
||||
@@ -542,13 +563,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.system_module — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.system_module — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -51,7 +54,7 @@
|
||||
<span class="sd">"""The name of the system module: alias for ``ImageName``"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">ImageName</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">def</span> <span class="fm">__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"> name="</span><span class="si">{1}</span><span class="s2">" base=</span><span class="si">{2:#x}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">ImageName</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">Base</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -122,13 +125,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+70
-14
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.task_scheduler — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.task_scheduler — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -93,10 +96,10 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">items_generator</span><span class="p">())</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">items_generator</span><span class="p">()</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">):</span> <span class="c1"># Allow subclasses to only overwrite 'get_item' to rewrite both behavior</span>
|
||||
<span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">index</span><span class="p">):</span> <span class="c1"># Allow subclasses to only overwrite 'get_item' to rewrite both behavior</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_item</span><span class="p">(</span><span class="n">index</span><span class="p">)</span>
|
||||
|
||||
<span class="c1"># Need to-do the doc=xx tricks to have the documentation in the 'AbstractAction' subclasses</span>
|
||||
@@ -206,26 +209,68 @@
|
||||
<span class="n">ITEM_TYPE</span> <span class="o">=</span> <span class="n">Trigger</span></div>
|
||||
|
||||
|
||||
<span class="k">class</span> <span class="nc">TaskRegistrationInfo</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">IRegistrationInfo</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="TaskRegistrationInfo"><a class="viewcode-back" href="../../../task_scheduler.html#windows.winobject.task_scheduler.TaskRegistrationInfo">[docs]</a><span class="k">class</span> <span class="nc">TaskRegistrationInfo</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">IRegistrationInfo</span><span class="p">):</span>
|
||||
<span class="sd">"""Provides the administrative information that can be used to describe the task.</span>
|
||||
|
||||
<span class="sd"> This information includes details such as a description of the task,</span>
|
||||
<span class="sd"> the author of the task, the date the task is registered,</span>
|
||||
<span class="sd"> and the security descriptor of the task.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">author</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_Author"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""The author of the task"""</span>
|
||||
<span class="n">description</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_Description"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""The description of the task"""</span>
|
||||
<span class="n">date</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_Date"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""The registration date of the task"""</span>
|
||||
<span class="n">source</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_Source"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""Where the task originated from.</span>
|
||||
|
||||
<span class="sd"> For example, a task may originate from a component, service, application, or user.</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">documentation</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_Documentation"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""Any additional documentation for the task"""</span>
|
||||
<span class="n">uri</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_URI"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""the URI of the task."""</span>
|
||||
<span class="n">version</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_Version"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""The version number of the task."""</span>
|
||||
|
||||
<span class="c1"># Return WindowsError: [Error -2147467263] Not implemented</span>
|
||||
<span class="n">xml</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_XmlText"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="c1"># security_descriptor = generate_simple_getter("get_SecurityDescriptor", gdef.BSTR)</span>
|
||||
<span class="c1"># xml = generate_simple_getter("get_XmlText", gdef.BSTR)</span>
|
||||
|
||||
<span class="n">sddl</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_SecurityDescriptor"</span><span class="p">,</span> <span class="n">windows</span><span class="o">.</span><span class="n">com</span><span class="o">.</span><span class="n">Variant</span><span class="p">)</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
<span class="k">def</span> <span class="nf">security_descriptor</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">sddl</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sddl</span>
|
||||
<span class="k">if</span> <span class="ow">not</span> <span class="n">sddl</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="kc">None</span>
|
||||
<span class="k">return</span> <span class="n">windows</span><span class="o">.</span><span class="n">security</span><span class="o">.</span><span class="n">SecurityDescriptor</span><span class="o">.</span><span class="n">from_string</span><span class="p">(</span><span class="n">sddl</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
|
||||
<div class="viewcode-block" id="TaskPrincipal"><a class="viewcode-back" href="../../../task_scheduler.html#windows.winobject.task_scheduler.TaskPrincipal">[docs]</a><span class="k">class</span> <span class="nc">TaskPrincipal</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">IPrincipal</span><span class="p">):</span>
|
||||
<span class="sd">"""Provides the security credentials for a principal.</span>
|
||||
<span class="sd"> These security credentials define the security context for the tasks that are associated with the principal.</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="k">class</span> <span class="nc">TaskPrincipal</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">IPrincipal</span><span class="p">):</span>
|
||||
<span class="n">name</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_DisplayName"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""The name of the principal"""</span>
|
||||
<span class="nb">id</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_Id"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""the identifier of the principal."""</span>
|
||||
<span class="n">user_id</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_UserId"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""the user identifier that is required to run the task"""</span>
|
||||
<span class="n">group_id</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_GroupId"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""the user group that is required to run the task"""</span>
|
||||
<span class="n">run_level</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_RunLevel"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">TASK_RUNLEVEL_TYPE</span><span class="p">)</span>
|
||||
<span class="sd">"""the privilege level that is required to run the tasks</span>
|
||||
|
||||
<span class="sd"> :type: :class:`~windows.generated_def.winstructs.TASK_RUNLEVEL_TYPE`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">logon_type</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_LogonType"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">TASK_LOGON_TYPE</span><span class="p">)</span>
|
||||
<span class="sd">""" logon method that is required to run the task</span>
|
||||
|
||||
<span class="sd"> :type: :class:`~windows.generated_def.winstructs.TASK_LOGON_TYPE`</span>
|
||||
<span class="sd"> """</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TaskDefinition"><a class="viewcode-back" href="../../../task_scheduler.html#windows.winobject.task_scheduler.TaskDefinition">[docs]</a><span class="k">class</span> <span class="nc">TaskDefinition</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">ITaskDefinition</span><span class="p">):</span>
|
||||
<span class="sd">"""The definition of a task"""</span>
|
||||
@@ -241,7 +286,18 @@
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">registration_info</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_RegistrationInfo"</span><span class="p">,</span> <span class="n">TaskRegistrationInfo</span><span class="p">,</span> <span class="n">extract_value</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="sd">"""The registration information of the task</span>
|
||||
|
||||
<span class="sd"> :type: :class:`TaskRegistrationInfo`</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">principal</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_Principal"</span><span class="p">,</span> <span class="n">TaskPrincipal</span><span class="p">,</span> <span class="n">extract_value</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
<span class="sd">"""The principal that provides the security credentials for the task.</span>
|
||||
<span class="sd"> These security credentials define the security context for the tasks that are associated with the principal.</span>
|
||||
|
||||
<span class="sd"> :type: :class:`TaskPrincipal`</span>
|
||||
<span class="sd"> """</span>
|
||||
|
||||
<span class="n">xml</span> <span class="o">=</span> <span class="n">generate_simple_getter</span><span class="p">(</span><span class="s2">"get_XmlText"</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">BSTR</span><span class="p">)</span>
|
||||
<span class="sd">"""The XML representig the task definition</span>
|
||||
|
||||
@@ -292,7 +348,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">GetSecurityDescriptor</span><span class="p">(</span><span class="n">secinfo</span><span class="p">,</span> <span class="n">res</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">res</span><span class="o">.</span><span class="n">value</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">def</span> <span class="fm">__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">" at </span><span class="si">{2:#x}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
@@ -420,7 +476,7 @@
|
||||
|
||||
|
||||
|
||||
<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">def</span> <span class="fm">__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">" at </span><span class="si">{2:#x}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">path</span><span class="p">,</span> <span class="nb">id</span><span class="p">(</span><span class="bp">self</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
@@ -497,13 +553,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+21
-15
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.token — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.token — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -41,9 +44,10 @@
|
||||
<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">windows</span> <span class="k">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">utils</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="c1"># import windows.security # at the end of this file (loop import)</span>
|
||||
|
||||
<span class="n">bltn_type</span> <span class="o">=</span> <span class="nb">type</span>
|
||||
|
||||
@@ -85,7 +89,7 @@
|
||||
<span class="sd"> """</span>
|
||||
<span class="k">return</span> <span class="p">[</span><span class="n">g</span><span class="o">.</span><span class="n">Sid</span> <span class="k">for</span> <span class="n">g</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_groups</span><span class="p">]</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">def</span> <span class="fm">__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"> count=</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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">GroupCount</span><span class="p">)</span></div>
|
||||
|
||||
<span class="n">TokenGroupsType</span> <span class="o">=</span> <span class="n">TokenGroups</span> <span class="c1"># Prevent confusion with token.TokenGroups</span>
|
||||
@@ -127,7 +131,7 @@
|
||||
<span class="k">assert</span> <span class="nb">len</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span>
|
||||
<span class="k">return</span> <span class="n">x</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<div class="viewcode-block" id="TokenPrivileges.__getitem__"><a class="viewcode-back" href="../../../token.html#windows.winobject.token.TokenPrivileges.__getitem__">[docs]</a> <span class="k">def</span> <span class="nf">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="TokenPrivileges.__getitem__"><a class="viewcode-back" href="../../../token.html#windows.winobject.token.TokenPrivileges.__getitem__">[docs]</a> <span class="k">def</span> <span class="fm">__getitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="sd">"""Retrieve the attribute value for privilege ``name``</span>
|
||||
|
||||
<span class="sd"> :raises: KeyError if privilege ``name`` not in the TokenPrivileges</span>
|
||||
@@ -138,7 +142,7 @@
|
||||
<span class="k">raise</span> <span class="ne">KeyError</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">priv</span><span class="o">.</span><span class="n">Attributes</span></div>
|
||||
|
||||
<div class="viewcode-block" id="TokenPrivileges.__setitem__"><a class="viewcode-back" href="../../../token.html#windows.winobject.token.TokenPrivileges.__setitem__">[docs]</a> <span class="k">def</span> <span class="nf">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="TokenPrivileges.__setitem__"><a class="viewcode-back" href="../../../token.html#windows.winobject.token.TokenPrivileges.__setitem__">[docs]</a> <span class="k">def</span> <span class="fm">__setitem__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">value</span><span class="p">):</span>
|
||||
<span class="sd">"""Set the attribute value for privilege ``name``</span>
|
||||
|
||||
<span class="sd"> :raises: KeyError if privilege ``name`` not in the TokenPrivileges</span>
|
||||
@@ -201,7 +205,7 @@
|
||||
<span class="n">array_name</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">VALUE_ARRAY_PTR_BY_TYPE</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">ValueType</span><span class="p">]</span>
|
||||
<span class="k">return</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">Values</span><span class="p">,</span> <span class="n">array_name</span><span class="p">)[:</span><span class="bp">self</span><span class="o">.</span><span class="n">ValueCount</span><span class="p">]</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">def</span> <span class="fm">__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"> name="</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="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">)</span></div>
|
||||
|
||||
|
||||
@@ -215,7 +219,7 @@
|
||||
|
||||
<span class="sd"> see `[MSDN] TOKEN_INFORMATION_CLASS <https://docs.microsoft.com/en-us/windows/desktop/api/winnt/ne-winnt-_token_information_class>`_</span>
|
||||
<span class="sd"> """</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">handle</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">handle</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">_handle</span> <span class="o">=</span> <span class="n">handle</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">_get_required_token_information_size</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">infos_class</span><span class="p">):</span>
|
||||
@@ -347,7 +351,6 @@
|
||||
|
||||
<span class="sd"> :type: :class:`windows.security.Acl`</span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="kn">import</span> <span class="nn">window.security</span> <span class="c1"># Beuk move token.py & in a security/ directory ?</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_token_infomations</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">TokenDefaultDacl</span><span class="p">,</span> <span class="n">windows</span><span class="o">.</span><span class="n">security</span><span class="o">.</span><span class="n">PAcl</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span>
|
||||
|
||||
<span class="c1"># def source(self): (tok.TokenSource) ??</span>
|
||||
@@ -650,13 +653,16 @@
|
||||
<span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">"</span><span class="si">{0}</span><span class="s2"> has no privilege <</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="p">,</span> <span class="n">name</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">adjust_privileges</span><span class="p">(</span><span class="n">privs</span><span class="p">)</span></div>
|
||||
|
||||
<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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">flag_repr</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">Flag</span><span class="o">.</span><span class="fm">__repr__</span>
|
||||
<span class="n">tid_int</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">TokenStatistics</span><span class="o">.</span><span class="n">TokenId</span><span class="p">)</span>
|
||||
<span class="n">toktype</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span>
|
||||
<span class="k">if</span> <span class="n">toktype</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">TokenPrimary</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="s2">"<</span><span class="si">{0}</span><span class="s2"> TokenId=</span><span class="si">{1:#x}</span><span class="s2"> Type=</span><span class="si">{2}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">tid_int</span><span class="p">,</span> <span class="n">flag_repr</span><span class="p">(</span><span class="n">toktype</span><span class="p">))</span>
|
||||
<span class="k">return</span> <span class="s2">"<</span><span class="si">{0}</span><span class="s2"> TokenId=</span><span class="si">{1:#x}</span><span class="s2"> Type=</span><span class="si">{2}</span><span class="s2"> ImpersonationLevel=</span><span class="si">{3}</span><span class="s2">>"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="n">tid_int</span><span class="p">,</span> <span class="n">flag_repr</span><span class="p">(</span><span class="n">toktype</span><span class="p">),</span> <span class="n">flag_repr</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">impersonation_level</span><span class="p">))</span></div>
|
||||
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows.security</span>
|
||||
</pre></div>
|
||||
|
||||
</div>
|
||||
@@ -689,13 +695,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+14
-11
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.volume — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.volume — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -40,11 +43,11 @@
|
||||
<span></span><span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</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.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.utils</span> <span class="k">import</span> <span class="n">AutoHandle</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.utils</span> <span class="kn">import</span> <span class="n">AutoHandle</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">sys</span>
|
||||
|
||||
@@ -53,7 +56,7 @@
|
||||
<span class="n">DRIVE_TYPE</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">FlagMapper</span><span class="p">(</span><span class="n">DRIVE_UNKNOWN</span><span class="p">,</span> <span class="n">DRIVE_NO_ROOT_DIR</span><span class="p">,</span> <span class="n">DRIVE_REMOVABLE</span><span class="p">,</span>
|
||||
<span class="n">DRIVE_FIXED</span><span class="p">,</span> <span class="n">DRIVE_REMOTE</span><span class="p">,</span> <span class="n">DRIVE_CDROM</span><span class="p">,</span> <span class="n">DRIVE_RAMDISK</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">name</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">name</span>
|
||||
|
||||
<span class="nd">@property</span>
|
||||
@@ -100,7 +103,7 @@
|
||||
<span class="n">gdef</span><span class="o">.</span><span class="n">FILE_SHARE_READ</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">OPEN_EXISTING</span><span class="p">,</span> <span class="n">gdef</span><span class="o">.</span><span class="n">FILE_FLAG_BACKUP_SEMANTICS</span> <span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">handle</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">def</span> <span class="fm">__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="si">{2}</span><span class="s2">)>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">name</span><span class="p">)</span></div>
|
||||
|
||||
<span class="k">def</span> <span class="nf">enum_logical_drive</span><span class="p">():</span>
|
||||
@@ -157,13 +160,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+22
-19
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winobject.wmi — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winobject.wmi — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -41,16 +44,16 @@
|
||||
<span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">struct</span>
|
||||
<span class="kn">import</span> <span class="nn">functools</span>
|
||||
<span class="kn">from</span> <span class="nn">functools</span> <span class="k">import</span> <span class="n">partial</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">partial</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</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">ctypes.wintypes</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows.com</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</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.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="k">import</span> <span class="n">basestring</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">basestring</span>
|
||||
|
||||
<span class="c1"># Common error check for all WMI COM interfaces</span>
|
||||
<span class="c1"># This 'just' add the corresponding 'WBEMSTATUS' to the hresult error code</span>
|
||||
@@ -212,7 +215,7 @@
|
||||
<span class="c1">## Make it callable like any class :D</span>
|
||||
<span class="fm">__call__</span> <span class="o">=</span> <span class="n">spawn_instance</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">if</span> <span class="ow">not</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"> (NULL)>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,)</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">genus</span> <span class="o">==</span> <span class="n">gdef</span><span class="o">.</span><span class="n">WBEM_GENUS_CLASS</span><span class="p">:</span>
|
||||
@@ -247,7 +250,7 @@
|
||||
<span class="k">else</span><span class="p">:</span>
|
||||
<span class="k">return</span> <span class="n">obj</span></div>
|
||||
|
||||
<div class="viewcode-block" id="WmiEnumeration.__iter__"><a class="viewcode-back" href="../../../wmi.html#windows.winobject.wmi.WmiEnumeration.__iter__">[docs]</a> <span class="k">def</span> <span class="nf">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<div class="viewcode-block" id="WmiEnumeration.__iter__"><a class="viewcode-back" href="../../../wmi.html#windows.winobject.wmi.WmiEnumeration.__iter__">[docs]</a> <span class="k">def</span> <span class="fm">__iter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="sd">"""Return an iterator with ``DEFAULT_TIMEOUT``"""</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">iter_timeout</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">DEFAULT_TIMEOUT</span><span class="p">)</span></div>
|
||||
|
||||
@@ -269,7 +272,7 @@
|
||||
|
||||
<div class="viewcode-block" id="WmiCallResult"><a class="viewcode-back" href="../../../wmi.html#windows.winobject.wmi.WmiCallResult">[docs]</a><span class="k">class</span> <span class="nc">WmiCallResult</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">IWbemCallResult</span><span class="p">,</span> <span class="n">WmiComInterface</span><span class="p">):</span>
|
||||
<span class="sd">"""The result of a WMI call/query. Real result value type depends of the context"""</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">result_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">namespace_name</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">result_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">namespace_name</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">result_type</span> <span class="o">=</span> <span class="n">result_type</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">namespace_name</span> <span class="o">=</span> <span class="n">namespace_name</span>
|
||||
|
||||
@@ -319,7 +322,7 @@
|
||||
<span class="n">DEFAULT_ENUM_FLAGS</span> <span class="o">=</span> <span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">WBEM_FLAG_RETURN_IMMEDIATELY</span> <span class="o">|</span>
|
||||
<span class="n">WBEM_FLAG_FORWARD_ONLY</span><span class="p">)</span> <span class="c1">#: The defauls flags used for enumeration. ``(WBEM_FLAG_RETURN_IMMEDIATELY | WBEM_FLAG_FORWARD_ONLY)``</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">namespace</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">namespace</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">namespace</span>
|
||||
|
||||
<div class="viewcode-block" id="WmiNamespace.connect"><a class="viewcode-back" href="../../../wmi.html#windows.winobject.wmi.WmiNamespace.connect">[docs]</a> <span class="nd">@classmethod</span>
|
||||
@@ -463,7 +466,7 @@
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">ExecMethod</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">method</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="n">inparam</span><span class="p">,</span> <span class="n">outparam</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="n">outparam</span> <span class="ow">or</span> <span class="n">result</span></div>
|
||||
|
||||
<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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="n">null</span> <span class="o">=</span> <span class="s2">""</span> <span class="k">if</span> <span class="bp">self</span> <span class="k">else</span> <span class="s2">" (NULL)"</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="si">{2}</span><span class="s2">>"""</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span><span class="o">.</span><span class="vm">__name__</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">null</span><span class="p">)</span></div>
|
||||
|
||||
@@ -476,7 +479,7 @@
|
||||
<span class="sd"> <WmiNamespace "root\SecurityCenter2"></span>
|
||||
<span class="sd"> """</span>
|
||||
<span class="n">DEFAULT_NAMESPACE</span> <span class="o">=</span> <span class="s2">"root</span><span class="se">\\</span><span class="s2">cimv2"</span> <span class="c1">#: The default namespace for :func:`select` & :func:`query`</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="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="c1"># Someone is going to use wmi: let's init com !</span>
|
||||
<span class="n">windows</span><span class="o">.</span><span class="n">com</span><span class="o">.</span><span class="n">init</span><span class="p">()</span>
|
||||
<span class="bp">self</span><span class="o">.</span><span class="n">wmi_requester_by_namespace</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
@@ -504,11 +507,11 @@
|
||||
<span class="k">def</span> <span class="nf">_open_wmi_requester</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">namespace</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="n">WmiNamespace</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">namespace</span><span class="p">)</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">__missing__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__missing__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">key</span><span class="p">):</span>
|
||||
<span class="bp">self</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_open_wmi_requester</span><span class="p">(</span><span class="n">key</span><span class="p">)</span>
|
||||
<span class="k">return</span> <span class="bp">self</span><span class="p">[</span><span class="n">key</span><span class="p">]</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">def</span> <span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
<span class="k">return</span> <span class="nb">object</span><span class="o">.</span><span class="fm">__repr__</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span></div>
|
||||
</pre></div>
|
||||
|
||||
@@ -542,13 +545,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+15
-12
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winproxy.apiproxy — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winproxy.apiproxy — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -41,8 +44,8 @@
|
||||
<span class="kn">import</span> <span class="nn">functools</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="kn">from</span> <span class="nn">.error</span> <span class="k">import</span> <span class="n">ExportNotFound</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="k">import</span> <span class="n">is_py3</span>
|
||||
<span class="kn">from</span> <span class="nn">.error</span> <span class="kn">import</span> <span class="n">ExportNotFound</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.pycompat</span> <span class="kn">import</span> <span class="n">is_py3</span>
|
||||
|
||||
<span class="c1"># Utils</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">apiproxy</span><span class="p">):</span>
|
||||
@@ -69,12 +72,12 @@
|
||||
<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">def</span> <span class="fm">__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">def</span> <span class="fm">__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>
|
||||
@@ -83,7 +86,7 @@
|
||||
<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="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">sentinel</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="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">func_name</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">error_check</span><span class="o">=</span><span class="n">sentinel</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">gdef</span><span class="o">.</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="n">sentinel</span><span class="p">:</span>
|
||||
@@ -92,7 +95,7 @@
|
||||
<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">_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="k">def</span> <span class="fm">__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="c1"># Use the name of the sub-function if None was given</span>
|
||||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">func_name</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">func_name</span> <span class="o">=</span> <span class="n">python_proxy</span><span class="o">.</span><span class="vm">__name__</span>
|
||||
@@ -191,13 +194,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+15
-12
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.winproxy.error — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.winproxy.error — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -40,12 +43,12 @@
|
||||
<span></span><span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</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.generated_def.ntstatus</span> <span class="kn">import</span> <span class="n">NtStatusException</span>
|
||||
|
||||
|
||||
<span class="c1"># ApiProxy stuff</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="k">def</span> <span class="fm">__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>
|
||||
@@ -53,7 +56,7 @@
|
||||
|
||||
<span class="c1"># PFW Winproxy Exception type</span>
|
||||
<div class="viewcode-block" id="WinproxyError"><a class="viewcode-back" href="../../../winproxy.html#windows.winproxy.WinproxyError">[docs]</a><span class="k">class</span> <span class="nc">WinproxyError</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">error_code</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__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">error_code</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">error_code</span><span class="p">)</span> <span class="c1">#GetLastError by default</span>
|
||||
<span class="n">api_error</span> <span class="o">=</span> <span class="nb">super</span><span class="p">(</span><span class="n">WinproxyError</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>
|
||||
@@ -62,13 +65,13 @@
|
||||
<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">__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_code</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="fm">__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_code</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
<span class="nb">super</span><span class="p">(</span><span class="n">WinproxyError</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="n">func_name</span><span class="p">)</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">def</span> <span class="fm">__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">WinproxyError</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">def</span> <span class="fm">__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">WinproxyError</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>
|
||||
|
||||
|
||||
@@ -148,13 +151,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+14
-11
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>windows.wintrust — PythonForWindows 0.5 documentation</title>
|
||||
<title>windows.wintrust — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="../../_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="../../_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="../../genindex.html" />
|
||||
<link rel="search" title="Search" href="../../search.html" />
|
||||
</head><body>
|
||||
@@ -26,7 +29,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -40,10 +43,10 @@
|
||||
<span></span><span class="kn">import</span> <span class="nn">ctypes</span>
|
||||
<span class="kn">import</span> <span class="nn">struct</span>
|
||||
<span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="k">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="k">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">namedtuple</span>
|
||||
<span class="kn">from</span> <span class="nn">windows</span> <span class="kn">import</span> <span class="n">winproxy</span>
|
||||
<span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</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.winstructs</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
|
||||
|
||||
@@ -105,7 +108,7 @@
|
||||
<span class="n">win_trust_data</span><span class="o">.</span><span class="n">pPolicyCallbackData</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">win_trust_data</span><span class="o">.</span><span class="n">pSIPClientData</span> <span class="o">=</span> <span class="kc">None</span>
|
||||
<span class="n">win_trust_data</span><span class="o">.</span><span class="n">dwUIChoice</span> <span class="o">=</span> <span class="n">WTD_UI_NONE</span>
|
||||
<span class="n">win_trust_data</span><span class="o">.</span><span class="n">fdwRevocationChecks</span> <span class="o">=</span> <span class="n">WTD_REVOKE_NONE</span>
|
||||
<span class="c1"># win_trust_data.fdwRevocationChecks = WTD_REVOKE_NONE</span>
|
||||
<span class="n">win_trust_data</span><span class="o">.</span><span class="n">fdwRevocationChecks</span> <span class="o">=</span> <span class="n">WTD_REVOKE_WHOLECHAIN</span>
|
||||
<span class="n">win_trust_data</span><span class="o">.</span><span class="n">dwUnionChoice</span> <span class="o">=</span> <span class="n">WTD_CHOICE_FILE</span>
|
||||
<span class="n">win_trust_data</span><span class="o">.</span><span class="n">dwStateAction</span> <span class="o">=</span> <span class="n">WTD_STATEACTION_VERIFY</span>
|
||||
@@ -159,7 +162,7 @@
|
||||
<span class="k">raise</span>
|
||||
<span class="k">return</span> <span class="n">buffer</span>
|
||||
|
||||
<span class="k">def</span> <span class="nf">get_file_hash2</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span>
|
||||
<span class="k">def</span> <span class="nf">get_file_hash2</span><span class="p">(</span><span class="n">filename</span><span class="p">):</span> <span class="c1">#POC: name/API will change/disapear</span>
|
||||
<span class="n">f</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="n">filename</span><span class="p">,</span> <span class="s2">"rb"</span><span class="p">)</span>
|
||||
<span class="n">handle</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">get_handle_from_file</span><span class="p">(</span><span class="n">f</span><span class="p">)</span>
|
||||
|
||||
@@ -260,13 +263,13 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="../../index.html">PythonForWindows 0.6 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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+129
-2
@@ -7,6 +7,12 @@
|
||||
|
||||
See sample :ref:`sample_debugger`
|
||||
|
||||
.. note::
|
||||
|
||||
If you are interrested by symbols (PDB) handling, go to subsection :ref:`debug_symbols_module`.
|
||||
|
||||
You can also look at the symbols-related samples: :ref:`sample_symbols`
|
||||
|
||||
:class:`Debugger`
|
||||
"""""""""""""""""
|
||||
|
||||
@@ -24,6 +30,18 @@ This means that those methods see the original ``current_process`` memory access
|
||||
.. automethod:: __init__
|
||||
|
||||
|
||||
:class:`SymbolDebugger`
|
||||
"""""""""""""""""""""""
|
||||
|
||||
.. note::
|
||||
|
||||
See sample :ref:`sample_symbol_debugger`
|
||||
|
||||
.. autoclass:: SymbolDebugger
|
||||
:show-inheritance:
|
||||
:members:
|
||||
:no-inherited-members:
|
||||
|
||||
|
||||
:class:`LocalDebugger`
|
||||
""""""""""""""""""""""
|
||||
@@ -43,7 +61,6 @@ There is not much documentation for now as the code might change soon.
|
||||
:members:
|
||||
|
||||
|
||||
|
||||
:class:`Breakpoint`
|
||||
"""""""""""""""""""
|
||||
|
||||
@@ -99,4 +116,114 @@ When a breakpoint is hit, its ``trigger`` function is called with the debugger a
|
||||
|
||||
.. note::
|
||||
|
||||
See sample :ref:`sample_debugger_bp_functionbp`
|
||||
See sample :ref:`sample_debugger_bp_functionbp`
|
||||
|
||||
|
||||
.. _debug_symbols_module:
|
||||
|
||||
:mod:`windows.debug.symbols` -- Using symbols
|
||||
"""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
.. module:: windows.debug.symbols
|
||||
|
||||
The :mod:`windows.debug.symbols` module provide classes to load PDB and resolve name/address.
|
||||
In its current state, this module does not handle types.
|
||||
|
||||
.. note::
|
||||
|
||||
See samples :ref:`sample_symbols`
|
||||
|
||||
|
||||
Configuration
|
||||
'''''''''''''
|
||||
|
||||
In order to be able to automatically download PDB and parse remote ``_NT_SYMBOL_PATH``, a debug version of the DLL `dbghelp.dll` must be used.
|
||||
(See `MSDN: DbgHelp Versions <https://docs.microsoft.com/en-us/windows/win32/debug/dbghelp-versions>`_)
|
||||
|
||||
As it is NOT recommended to replace ``system32/dbghelp.dll``, its path must be provided to PythonForWindows.
|
||||
This path must be provided before any call to the ``dbghelp.dll`` APIs.
|
||||
Also, the ``symsrv.dll`` DLL should be present in the same directory as ``dbghelp.dll`` (See `SymSrv Installation <https://docs.microsoft.com/en-us/windows/win32/debug/using-symsrv#installation>`_)
|
||||
|
||||
There is 2 ways to pass this information to ``PythonForWindows``:
|
||||
|
||||
* Using the function :func:`set_dbghelp_path`
|
||||
* Using the environment variable ``PFW_DBGHELP_PATH``
|
||||
* If this variable exists it will simply trigger a call to ``set_dbghelp_path(PFW_DBGHELP_PATH)``
|
||||
|
||||
|
||||
If the given path is a directory, the final path will be computer as ``path\<current_process_bitness>\dbghelp.dll``.
|
||||
This allow to use the same script (or environment variable) transparently in bot 32b & 64b python interpreters.
|
||||
|
||||
.. note::
|
||||
|
||||
For example, on my computer my setup is done through the environment variable: ``PFW_DBGHELP_PATH=D:\pysym\bin``
|
||||
|
||||
This directory have the following layout:
|
||||
|
||||
| $ tree /A /F %PFW_DBGHELP_PATH%
|
||||
| D:\\PYSYM\\BIN
|
||||
| \| symsrv.yes
|
||||
| \|
|
||||
| +\\-\\-\\-32
|
||||
| \| dbghelp.dll
|
||||
| \| symsrv.dll
|
||||
| \|
|
||||
| \\\\-\\-\\-64
|
||||
| dbghelp.dll
|
||||
| symsrv.dll
|
||||
|
||||
|
||||
Helpers
|
||||
'''''''
|
||||
|
||||
.. autofunction:: set_dbghelp_path
|
||||
|
||||
.. autoclass:: SymbolEngine
|
||||
:members:
|
||||
|
||||
|
||||
:class:`VirtualSymbolHandler`
|
||||
'''''''''''''''''''''''''''''
|
||||
|
||||
.. autoclass:: VirtualSymbolHandler
|
||||
:show-inheritance:
|
||||
:members:
|
||||
:inherited-members:
|
||||
:special-members: __getitem__
|
||||
|
||||
|
||||
:class:`ProcessSymbolHandler`
|
||||
'''''''''''''''''''''''''''''
|
||||
|
||||
.. autoclass:: ProcessSymbolHandler
|
||||
:show-inheritance:
|
||||
:members:
|
||||
:inherited-members:
|
||||
:special-members: __getitem__
|
||||
|
||||
|
||||
:class:`SymbolModule`
|
||||
'''''''''''''''''''''
|
||||
|
||||
.. autoclass:: SymbolModule
|
||||
:show-inheritance:
|
||||
:members:
|
||||
:inherited-members:
|
||||
|
||||
|
||||
:class:`SymbolInfo`
|
||||
'''''''''''''''''''
|
||||
|
||||
.. autoclass:: SymbolInfo
|
||||
:show-inheritance:
|
||||
:members:
|
||||
|
||||
.. autoclass:: SymbolInfoA
|
||||
:show-inheritance:
|
||||
:members:
|
||||
:inherited-members: displacement
|
||||
:special-members: __str__, __int__
|
||||
|
||||
.. py:attribute:: displacement
|
||||
|
||||
The displacement between the addresse and the start of the symbol (name)
|
||||
+121
@@ -0,0 +1,121 @@
|
||||
Device Manager
|
||||
==============
|
||||
|
||||
.. module:: windows.winobject.device_manager
|
||||
|
||||
The :class:`DeviceManager` instance is accessible via :py:attr:`windows.system.device_manager
|
||||
<windows.winobject.system.System.device_manager>`
|
||||
|
||||
.. note::
|
||||
|
||||
See sample at :ref:`sample_device_manager`
|
||||
|
||||
|
||||
|
||||
DeviceManager
|
||||
"""""""""""""
|
||||
|
||||
|
||||
.. autoclass:: DeviceManager
|
||||
:members:
|
||||
|
||||
|
||||
DeviceClass
|
||||
"""""""""""
|
||||
|
||||
|
||||
.. autoclass:: DeviceClass
|
||||
:members:
|
||||
:no-inherited-members:
|
||||
|
||||
|
||||
|
||||
DeviceInformationSet
|
||||
""""""""""""""""""""
|
||||
|
||||
|
||||
.. autoclass:: DeviceInformationSet
|
||||
:members:
|
||||
:special-members: __iter__
|
||||
|
||||
|
||||
|
||||
DeviceInstance
|
||||
""""""""""""""
|
||||
|
||||
|
||||
.. autoclass:: DeviceInstance
|
||||
:members:
|
||||
|
||||
|
||||
LogicalConfiguration
|
||||
""""""""""""""""""""
|
||||
|
||||
.. autoclass:: LogicalConfiguration
|
||||
:members:
|
||||
|
||||
|
||||
ResourceDescriptor
|
||||
""""""""""""""""""
|
||||
|
||||
.. autoclass:: ResourceDescriptor
|
||||
:members:
|
||||
|
||||
|
||||
Concrete ResourceDescriptor
|
||||
'''''''''''''''''''''''''''
|
||||
|
||||
ResourceNoType
|
||||
------------------
|
||||
|
||||
.. autoclass:: ResourceNoType
|
||||
|
||||
MemoryResource
|
||||
--------------
|
||||
|
||||
.. autoclass:: MemoryResource
|
||||
|
||||
IoResource
|
||||
----------
|
||||
|
||||
.. autoclass:: IoResource
|
||||
|
||||
DmaResource
|
||||
-----------
|
||||
|
||||
.. autoclass:: DmaResource
|
||||
|
||||
IrqResource
|
||||
-----------
|
||||
|
||||
.. autoclass:: IrqResource
|
||||
|
||||
BusNumberResource
|
||||
-----------------
|
||||
|
||||
.. autoclass:: BusNumberResource
|
||||
|
||||
MemLargeResource
|
||||
----------------
|
||||
|
||||
.. autoclass:: MemLargeResource
|
||||
|
||||
ClassSpecificResource
|
||||
---------------------
|
||||
|
||||
.. autoclass:: ClassSpecificResource
|
||||
|
||||
DevicePrivateResource
|
||||
---------------------
|
||||
|
||||
.. autoclass:: DevicePrivateResource
|
||||
|
||||
MfCardConfigResource
|
||||
--------------------
|
||||
|
||||
.. autoclass:: MfCardConfigResource
|
||||
|
||||
PcCardConfigResource
|
||||
--------------------
|
||||
|
||||
.. autoclass:: PcCardConfigResource
|
||||
Vendored
+48
@@ -0,0 +1,48 @@
|
||||
ETW -- Event Tracing for Windows
|
||||
================================
|
||||
|
||||
.. module:: windows.winobject.event_trace
|
||||
|
||||
The :class:`EtwManager` instance is accessible via :py:attr:`windows.system.etw
|
||||
<windows.winobject.system.System.etw>`
|
||||
|
||||
.. note::
|
||||
|
||||
This code is the result of my research on ``ETW`` that lead to this presentation `ETW for the lazy reverser (FR) <https://www.rump.beer/2019/slides/etw_lazy_reverser.pdf>`_
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
See sample :ref:`sample_etw`
|
||||
|
||||
|
||||
EtwManager
|
||||
""""""""""
|
||||
|
||||
|
||||
.. autoclass:: EtwManager
|
||||
:members:
|
||||
|
||||
|
||||
Tracing Events
|
||||
""""""""""""""
|
||||
|
||||
EtwTrace
|
||||
''''''''
|
||||
|
||||
.. autoclass:: EtwTrace
|
||||
:members:
|
||||
|
||||
|
||||
EventTraceProperties
|
||||
''''''''''''''''''''
|
||||
|
||||
.. autoclass:: EventTraceProperties
|
||||
:members:
|
||||
|
||||
EventRecord
|
||||
'''''''''''
|
||||
|
||||
.. autoclass:: EventRecord
|
||||
:members:
|
||||
|
||||
+3
@@ -10,6 +10,9 @@ I have tried to offer some abstraction without completly hidding the some underl
|
||||
|
||||
The current API may need some works to provide simpler/highter level API in the future.
|
||||
|
||||
The :class:`EvtlogManager` instance is accessible via :py:attr:`windows.system.event_log
|
||||
<windows.winobject.system.System.event_log>`
|
||||
|
||||
For now, the best thing to do is look at the sample:
|
||||
|
||||
.. note::
|
||||
|
||||
+8
-4
@@ -34,15 +34,19 @@ You can install PythonForWindows using the ``setup.py`` at the root of the proje
|
||||
|
||||
python setup.py install
|
||||
|
||||
In its current state the project only support Python2 and
|
||||
``setup.py`` will raise an :class:`NotImplementedError` if launched from python3.
|
||||
|
||||
|
||||
.. warning::
|
||||
|
||||
PythonForWindows is not available on Pypi for now and thus cannot be directly installed using ``pip``.
|
||||
|
||||
|
||||
Python3
|
||||
^^^^^^^
|
||||
|
||||
python3 support is still in beta.
|
||||
All the tests pass on master, but I did not test it heavily on real case.
|
||||
Do not hesitate report bugs and issues.
|
||||
|
||||
|
||||
Documentation
|
||||
"""""""""""""
|
||||
|
||||
|
||||
+1
-1
@@ -32,4 +32,4 @@ KernelObject
|
||||
.. autoclass:: KernelObject
|
||||
:members:
|
||||
:undoc-members:
|
||||
:special-members: __getitem__, __iter__
|
||||
:special-members: __getitem__,__iter__
|
||||
Vendored
+2
-2
@@ -64,7 +64,7 @@ Example:
|
||||
>>> client = windows.rpc.find_alpc_endpoint_and_connect(UAC_UIID)
|
||||
>>> client
|
||||
<windows.rpc.client.RPCClient object at 0x046A1470>
|
||||
>>> client.alpc_client.portname
|
||||
>>> client.alpc_client.port_name
|
||||
'\\RPC Control\\LRPC-c30c67fef2afa1612b'
|
||||
>>> iid = client.bind(UAC_UIID)
|
||||
>>> iid
|
||||
@@ -230,4 +230,4 @@ NDR STREAM
|
||||
>>> x.data
|
||||
'CCCC'
|
||||
>>> hex(ndr.NdrLong.unpack(x))
|
||||
'0x43434343'
|
||||
'0x43434343'
|
||||
|
||||
+108
@@ -92,6 +92,20 @@ Output
|
||||
.. literalinclude:: samples_output\system.txt
|
||||
|
||||
|
||||
.. _sample_services_demo:
|
||||
|
||||
Services
|
||||
""""""""
|
||||
|
||||
.. literalinclude:: ..\..\samples\service\service_demo.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\service_service_demo.txt
|
||||
|
||||
|
||||
|
||||
|
||||
.. _sample_network_exploration:
|
||||
|
||||
:class:`Network` - socket exploration
|
||||
@@ -162,6 +176,27 @@ Output
|
||||
.. literalinclude:: samples_output\object_manager_findobj.txt
|
||||
|
||||
|
||||
.. _sample_device_manager:
|
||||
|
||||
Device manager
|
||||
""""""""""""""
|
||||
|
||||
.. literalinclude:: ..\..\samples\device_manager\device_manager.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\device_manager_device_manager.txt
|
||||
|
||||
|
||||
Enumerate devices
|
||||
'''''''''''''''''
|
||||
|
||||
.. literalinclude:: ..\..\samples\device_manager\enum_devices.py
|
||||
|
||||
|
||||
.. literalinclude:: samples_output\device_manager_enum_devices.txt
|
||||
|
||||
|
||||
.. _sample_wintrust:
|
||||
|
||||
``windows.wintrust``
|
||||
@@ -309,6 +344,18 @@ Ouput
|
||||
.. literalinclude:: samples_output\test_code.txt
|
||||
|
||||
|
||||
.. _sample_symbol_debugger:
|
||||
|
||||
:class:`SymbolDebugger`
|
||||
'''''''''''''''''''''''
|
||||
|
||||
.. literalinclude:: ..\..\samples\debug\symbol_debugger.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\debug_symbol_debugger.txt
|
||||
|
||||
|
||||
.. _sample_local_debugger:
|
||||
|
||||
|
||||
@@ -357,6 +404,43 @@ Ouput::
|
||||
I AM LOADING <C:\Windows\system32\ole32.dll>
|
||||
|
||||
|
||||
.. _sample_symbols:
|
||||
|
||||
Symbols
|
||||
"""""""
|
||||
|
||||
VirtualSymbolHandler
|
||||
''''''''''''''''''''
|
||||
|
||||
.. literalinclude:: ..\..\samples\debug\symbols\virtsymdemo.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\debug_symbol_virtsymdemo.txt
|
||||
|
||||
|
||||
ProcessSymbolHandler
|
||||
''''''''''''''''''''
|
||||
|
||||
.. literalinclude:: ..\..\samples\debug\symbols\processsymdemo.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\debug_symbol_processsymdemo.txt
|
||||
|
||||
|
||||
|
||||
Symbol search
|
||||
'''''''''''''
|
||||
|
||||
.. literalinclude:: ..\..\samples\debug\symbols\symsearch.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\debug_symbol_symsearch.txt
|
||||
|
||||
|
||||
|
||||
.. _wmi_samples:
|
||||
|
||||
WMI
|
||||
@@ -585,3 +669,27 @@ Query SACL
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\security_query_sacl.txt
|
||||
|
||||
|
||||
.. _sample_etw:
|
||||
|
||||
ETW (Event Tracing for Windows)
|
||||
"""""""""""""""""""""""""""""""
|
||||
|
||||
Trace processing
|
||||
''''''''''''''''
|
||||
|
||||
.. literalinclude:: ..\..\samples\etw\uac_trace.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\etw_uac_trace.txt
|
||||
|
||||
Enumeration
|
||||
'''''''''''
|
||||
|
||||
.. literalinclude:: ..\..\samples\etw\etw_enumeration.py
|
||||
|
||||
Output
|
||||
|
||||
.. literalinclude:: samples_output\etw_etw_enumeration.txt
|
||||
|
||||
+14
-6
@@ -1,19 +1,27 @@
|
||||
Service
|
||||
=======
|
||||
|
||||
The list of services is accessible via :py:attr:`windows.system.services
|
||||
The services manager is accessible via :py:attr:`windows.system.services
|
||||
<windows.winobject.system.System.services>`
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
See sample :ref:`sample_system`
|
||||
See sample :ref:`sample_system` & :ref:`sample_services_demo`
|
||||
|
||||
.. module:: windows.winobject.service
|
||||
|
||||
.. autoclass:: ServiceStatus
|
||||
:exclude-members: count, index
|
||||
|
||||
.. autoclass:: ServiceA
|
||||
ServiceManager
|
||||
""""""""""""""
|
||||
|
||||
.. autoclass:: ServiceManager
|
||||
:show-inheritance:
|
||||
:inherited-members:
|
||||
:special-members: __getitem__, __iter__
|
||||
|
||||
|
||||
Service
|
||||
"""""""
|
||||
|
||||
.. autoclass:: Service
|
||||
:inherited-members:
|
||||
+13
@@ -44,6 +44,19 @@ TaskDefinition
|
||||
:show-inheritance:
|
||||
:special-members: __getitem__, __delitem__, __call__
|
||||
|
||||
|
||||
TaskPrincipal
|
||||
'''''''''''''
|
||||
|
||||
.. autoclass:: TaskPrincipal
|
||||
:show-inheritance:
|
||||
|
||||
TaskRegistrationInfo
|
||||
''''''''''''''''''''
|
||||
|
||||
.. autoclass:: TaskRegistrationInfo
|
||||
:show-inheritance:
|
||||
|
||||
Action
|
||||
""""""
|
||||
|
||||
|
||||
+982
-655
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1,7 +1,7 @@
|
||||
.. currentmodule:: windows.generated_def
|
||||
|
||||
WinError
|
||||
------
|
||||
--------
|
||||
.. autodata:: FACILITY_NULL
|
||||
.. autodata:: FACILITY_RPC
|
||||
.. autodata:: FACILITY_DISPATCH
|
||||
|
||||
+3
-1
@@ -20,5 +20,7 @@ This sections describes them by group of relation.
|
||||
handle.rst
|
||||
system_module.rst
|
||||
object_manager.rst
|
||||
device_manager.rst
|
||||
task_scheduler.rst
|
||||
evtlog.rst
|
||||
evtlog.rst
|
||||
etw.rst
|
||||
+1872
-193
File diff suppressed because it is too large
Load Diff
Vendored
+12
-1
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Sphinx stylesheet -- basic theme.
|
||||
*
|
||||
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
@@ -81,6 +81,10 @@ div.sphinxsidebar input {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox form.search {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div.sphinxsidebar #searchbox input[type="text"] {
|
||||
float: left;
|
||||
width: 80%;
|
||||
@@ -427,6 +431,13 @@ table.field-list td, table.field-list th {
|
||||
hyphens: manual;
|
||||
}
|
||||
|
||||
/* -- hlist styles ---------------------------------------------------------- */
|
||||
|
||||
table.hlist td {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
|
||||
/* -- other body styles ----------------------------------------------------- */
|
||||
|
||||
ol.arabic {
|
||||
|
||||
Vendored
+1
-1
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Sphinx stylesheet -- classic theme.
|
||||
*
|
||||
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
Vendored
+5
-3
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* Sphinx JavaScript utilities for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
@@ -150,7 +150,9 @@ var Documentation = {
|
||||
this.fixFirefoxAnchorBug();
|
||||
this.highlightSearchWords();
|
||||
this.initIndexTable();
|
||||
|
||||
if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) {
|
||||
this.initOnKeyListeners();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -310,4 +312,4 @@ _ = Documentation.gettext;
|
||||
|
||||
$(document).ready(function() {
|
||||
Documentation.init();
|
||||
});
|
||||
});
|
||||
|
||||
+3
-2
@@ -1,9 +1,10 @@
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
|
||||
VERSION: '0.5',
|
||||
VERSION: '0.6',
|
||||
LANGUAGE: 'None',
|
||||
COLLAPSE_INDEX: false,
|
||||
FILE_SUFFIX: '.html',
|
||||
HAS_SOURCE: true,
|
||||
SOURCELINK_SUFFIX: '.txt'
|
||||
SOURCELINK_SUFFIX: '.txt',
|
||||
NAVIGATION_WITH_KEYS: false,
|
||||
};
|
||||
+297
@@ -0,0 +1,297 @@
|
||||
/*
|
||||
* language_data.js
|
||||
* ~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* This script contains the language-specific data used by searchtools.js,
|
||||
* namely the list of stopwords, stemmer, scorer and splitter.
|
||||
*
|
||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
||||
|
||||
|
||||
/* Non-minified version JS is _stemmer.js if file is provided */
|
||||
/**
|
||||
* Porter Stemmer
|
||||
*/
|
||||
var Stemmer = function() {
|
||||
|
||||
var step2list = {
|
||||
ational: 'ate',
|
||||
tional: 'tion',
|
||||
enci: 'ence',
|
||||
anci: 'ance',
|
||||
izer: 'ize',
|
||||
bli: 'ble',
|
||||
alli: 'al',
|
||||
entli: 'ent',
|
||||
eli: 'e',
|
||||
ousli: 'ous',
|
||||
ization: 'ize',
|
||||
ation: 'ate',
|
||||
ator: 'ate',
|
||||
alism: 'al',
|
||||
iveness: 'ive',
|
||||
fulness: 'ful',
|
||||
ousness: 'ous',
|
||||
aliti: 'al',
|
||||
iviti: 'ive',
|
||||
biliti: 'ble',
|
||||
logi: 'log'
|
||||
};
|
||||
|
||||
var step3list = {
|
||||
icate: 'ic',
|
||||
ative: '',
|
||||
alize: 'al',
|
||||
iciti: 'ic',
|
||||
ical: 'ic',
|
||||
ful: '',
|
||||
ness: ''
|
||||
};
|
||||
|
||||
var c = "[^aeiou]"; // consonant
|
||||
var v = "[aeiouy]"; // vowel
|
||||
var C = c + "[^aeiouy]*"; // consonant sequence
|
||||
var V = v + "[aeiou]*"; // vowel sequence
|
||||
|
||||
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
|
||||
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
|
||||
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
|
||||
var s_v = "^(" + C + ")?" + v; // vowel in stem
|
||||
|
||||
this.stemWord = function (w) {
|
||||
var stem;
|
||||
var suffix;
|
||||
var firstch;
|
||||
var origword = w;
|
||||
|
||||
if (w.length < 3)
|
||||
return w;
|
||||
|
||||
var re;
|
||||
var re2;
|
||||
var re3;
|
||||
var re4;
|
||||
|
||||
firstch = w.substr(0,1);
|
||||
if (firstch == "y")
|
||||
w = firstch.toUpperCase() + w.substr(1);
|
||||
|
||||
// Step 1a
|
||||
re = /^(.+?)(ss|i)es$/;
|
||||
re2 = /^(.+?)([^s])s$/;
|
||||
|
||||
if (re.test(w))
|
||||
w = w.replace(re,"$1$2");
|
||||
else if (re2.test(w))
|
||||
w = w.replace(re2,"$1$2");
|
||||
|
||||
// Step 1b
|
||||
re = /^(.+?)eed$/;
|
||||
re2 = /^(.+?)(ed|ing)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(fp[1])) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1];
|
||||
re2 = new RegExp(s_v);
|
||||
if (re2.test(stem)) {
|
||||
w = stem;
|
||||
re2 = /(at|bl|iz)$/;
|
||||
re3 = new RegExp("([^aeiouylsz])\\1$");
|
||||
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re2.test(w))
|
||||
w = w + "e";
|
||||
else if (re3.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
else if (re4.test(w))
|
||||
w = w + "e";
|
||||
}
|
||||
}
|
||||
|
||||
// Step 1c
|
||||
re = /^(.+?)y$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(s_v);
|
||||
if (re.test(stem))
|
||||
w = stem + "i";
|
||||
}
|
||||
|
||||
// Step 2
|
||||
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step2list[suffix];
|
||||
}
|
||||
|
||||
// Step 3
|
||||
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step3list[suffix];
|
||||
}
|
||||
|
||||
// Step 4
|
||||
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
|
||||
re2 = /^(.+?)(s|t)(ion)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
if (re.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1] + fp[2];
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re2.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
|
||||
// Step 5
|
||||
re = /^(.+?)e$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
re2 = new RegExp(meq1);
|
||||
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
|
||||
w = stem;
|
||||
}
|
||||
re = /ll$/;
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re.test(w) && re2.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
|
||||
// and turn initial Y back to y
|
||||
if (firstch == "y")
|
||||
w = firstch.toLowerCase() + w.substr(1);
|
||||
return w;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var splitChars = (function() {
|
||||
var result = {};
|
||||
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
|
||||
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
|
||||
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
|
||||
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
|
||||
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
|
||||
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
|
||||
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
|
||||
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
|
||||
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
|
||||
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
|
||||
var i, j, start, end;
|
||||
for (i = 0; i < singles.length; i++) {
|
||||
result[singles[i]] = true;
|
||||
}
|
||||
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
|
||||
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
|
||||
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
|
||||
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
|
||||
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
|
||||
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
|
||||
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
|
||||
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
|
||||
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
|
||||
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
|
||||
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
|
||||
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
|
||||
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
|
||||
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
|
||||
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
|
||||
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
|
||||
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
|
||||
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
|
||||
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
|
||||
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
|
||||
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
|
||||
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
|
||||
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
|
||||
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
|
||||
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
|
||||
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
|
||||
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
|
||||
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
|
||||
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
|
||||
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
|
||||
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
|
||||
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
|
||||
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
|
||||
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
|
||||
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
|
||||
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
|
||||
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
|
||||
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
|
||||
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
|
||||
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
|
||||
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
|
||||
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
|
||||
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
|
||||
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
|
||||
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
|
||||
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
|
||||
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
|
||||
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
|
||||
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
|
||||
for (i = 0; i < ranges.length; i++) {
|
||||
start = ranges[i][0];
|
||||
end = ranges[i][1];
|
||||
for (j = start; j <= end; j++) {
|
||||
result[j] = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
})();
|
||||
|
||||
function splitQuery(query) {
|
||||
var result = [];
|
||||
var start = -1;
|
||||
for (var i = 0; i < query.length; i++) {
|
||||
if (splitChars[query.charCodeAt(i)]) {
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start, i));
|
||||
start = -1;
|
||||
}
|
||||
} else if (start === -1) {
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+34
-314
@@ -1,331 +1,52 @@
|
||||
/*
|
||||
* searchtools.js_t
|
||||
* searchtools.js
|
||||
* ~~~~~~~~~~~~~~~~
|
||||
*
|
||||
* Sphinx JavaScript utilities for the full-text search.
|
||||
*
|
||||
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
if (!Scorer) {
|
||||
/**
|
||||
* Simple result scoring code.
|
||||
*/
|
||||
var Scorer = {
|
||||
// Implement the following function to further tweak the score for each result
|
||||
// The function takes a result array [filename, title, anchor, descr, score]
|
||||
// and returns the new score.
|
||||
/*
|
||||
score: function(result) {
|
||||
return result[4];
|
||||
},
|
||||
*/
|
||||
|
||||
/* Non-minified version JS is _stemmer.js if file is provided */
|
||||
/**
|
||||
* Porter Stemmer
|
||||
*/
|
||||
var Stemmer = function() {
|
||||
// query matches the full name of an object
|
||||
objNameMatch: 11,
|
||||
// or matches in the last dotted part of the object name
|
||||
objPartialMatch: 6,
|
||||
// Additive scores depending on the priority of the object
|
||||
objPrio: {0: 15, // used to be importantResults
|
||||
1: 5, // used to be objectResults
|
||||
2: -5}, // used to be unimportantResults
|
||||
// Used when the priority is not in the mapping.
|
||||
objPrioDefault: 0,
|
||||
|
||||
var step2list = {
|
||||
ational: 'ate',
|
||||
tional: 'tion',
|
||||
enci: 'ence',
|
||||
anci: 'ance',
|
||||
izer: 'ize',
|
||||
bli: 'ble',
|
||||
alli: 'al',
|
||||
entli: 'ent',
|
||||
eli: 'e',
|
||||
ousli: 'ous',
|
||||
ization: 'ize',
|
||||
ation: 'ate',
|
||||
ator: 'ate',
|
||||
alism: 'al',
|
||||
iveness: 'ive',
|
||||
fulness: 'ful',
|
||||
ousness: 'ous',
|
||||
aliti: 'al',
|
||||
iviti: 'ive',
|
||||
biliti: 'ble',
|
||||
logi: 'log'
|
||||
// query found in title
|
||||
title: 15,
|
||||
// query found in terms
|
||||
term: 5
|
||||
};
|
||||
}
|
||||
|
||||
var step3list = {
|
||||
icate: 'ic',
|
||||
ative: '',
|
||||
alize: 'al',
|
||||
iciti: 'ic',
|
||||
ical: 'ic',
|
||||
ful: '',
|
||||
ness: ''
|
||||
};
|
||||
|
||||
var c = "[^aeiou]"; // consonant
|
||||
var v = "[aeiouy]"; // vowel
|
||||
var C = c + "[^aeiouy]*"; // consonant sequence
|
||||
var V = v + "[aeiou]*"; // vowel sequence
|
||||
|
||||
var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
|
||||
var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
|
||||
var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
|
||||
var s_v = "^(" + C + ")?" + v; // vowel in stem
|
||||
|
||||
this.stemWord = function (w) {
|
||||
var stem;
|
||||
var suffix;
|
||||
var firstch;
|
||||
var origword = w;
|
||||
|
||||
if (w.length < 3)
|
||||
return w;
|
||||
|
||||
var re;
|
||||
var re2;
|
||||
var re3;
|
||||
var re4;
|
||||
|
||||
firstch = w.substr(0,1);
|
||||
if (firstch == "y")
|
||||
w = firstch.toUpperCase() + w.substr(1);
|
||||
|
||||
// Step 1a
|
||||
re = /^(.+?)(ss|i)es$/;
|
||||
re2 = /^(.+?)([^s])s$/;
|
||||
|
||||
if (re.test(w))
|
||||
w = w.replace(re,"$1$2");
|
||||
else if (re2.test(w))
|
||||
w = w.replace(re2,"$1$2");
|
||||
|
||||
// Step 1b
|
||||
re = /^(.+?)eed$/;
|
||||
re2 = /^(.+?)(ed|ing)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(fp[1])) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1];
|
||||
re2 = new RegExp(s_v);
|
||||
if (re2.test(stem)) {
|
||||
w = stem;
|
||||
re2 = /(at|bl|iz)$/;
|
||||
re3 = new RegExp("([^aeiouylsz])\\1$");
|
||||
re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re2.test(w))
|
||||
w = w + "e";
|
||||
else if (re3.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
else if (re4.test(w))
|
||||
w = w + "e";
|
||||
}
|
||||
}
|
||||
|
||||
// Step 1c
|
||||
re = /^(.+?)y$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(s_v);
|
||||
if (re.test(stem))
|
||||
w = stem + "i";
|
||||
}
|
||||
|
||||
// Step 2
|
||||
re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step2list[suffix];
|
||||
}
|
||||
|
||||
// Step 3
|
||||
re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
suffix = fp[2];
|
||||
re = new RegExp(mgr0);
|
||||
if (re.test(stem))
|
||||
w = stem + step3list[suffix];
|
||||
}
|
||||
|
||||
// Step 4
|
||||
re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
|
||||
re2 = /^(.+?)(s|t)(ion)$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
if (re.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
else if (re2.test(w)) {
|
||||
var fp = re2.exec(w);
|
||||
stem = fp[1] + fp[2];
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re2.test(stem))
|
||||
w = stem;
|
||||
}
|
||||
|
||||
// Step 5
|
||||
re = /^(.+?)e$/;
|
||||
if (re.test(w)) {
|
||||
var fp = re.exec(w);
|
||||
stem = fp[1];
|
||||
re = new RegExp(mgr1);
|
||||
re2 = new RegExp(meq1);
|
||||
re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
|
||||
if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
|
||||
w = stem;
|
||||
}
|
||||
re = /ll$/;
|
||||
re2 = new RegExp(mgr1);
|
||||
if (re.test(w) && re2.test(w)) {
|
||||
re = /.$/;
|
||||
w = w.replace(re,"");
|
||||
}
|
||||
|
||||
// and turn initial Y back to y
|
||||
if (firstch == "y")
|
||||
w = firstch.toLowerCase() + w.substr(1);
|
||||
return w;
|
||||
if (!splitQuery) {
|
||||
function splitQuery(query) {
|
||||
return query.split(/\s+/);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Simple result scoring code.
|
||||
*/
|
||||
var Scorer = {
|
||||
// Implement the following function to further tweak the score for each result
|
||||
// The function takes a result array [filename, title, anchor, descr, score]
|
||||
// and returns the new score.
|
||||
/*
|
||||
score: function(result) {
|
||||
return result[4];
|
||||
},
|
||||
*/
|
||||
|
||||
// query matches the full name of an object
|
||||
objNameMatch: 11,
|
||||
// or matches in the last dotted part of the object name
|
||||
objPartialMatch: 6,
|
||||
// Additive scores depending on the priority of the object
|
||||
objPrio: {0: 15, // used to be importantResults
|
||||
1: 5, // used to be objectResults
|
||||
2: -5}, // used to be unimportantResults
|
||||
// Used when the priority is not in the mapping.
|
||||
objPrioDefault: 0,
|
||||
|
||||
// query found in title
|
||||
title: 15,
|
||||
// query found in terms
|
||||
term: 5
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var splitChars = (function() {
|
||||
var result = {};
|
||||
var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648,
|
||||
1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702,
|
||||
2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971,
|
||||
2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345,
|
||||
3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761,
|
||||
3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823,
|
||||
4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125,
|
||||
8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695,
|
||||
11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587,
|
||||
43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141];
|
||||
var i, j, start, end;
|
||||
for (i = 0; i < singles.length; i++) {
|
||||
result[singles[i]] = true;
|
||||
}
|
||||
var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709],
|
||||
[722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161],
|
||||
[1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568],
|
||||
[1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807],
|
||||
[1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047],
|
||||
[2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383],
|
||||
[2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450],
|
||||
[2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547],
|
||||
[2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673],
|
||||
[2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820],
|
||||
[2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946],
|
||||
[2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023],
|
||||
[3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173],
|
||||
[3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332],
|
||||
[3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481],
|
||||
[3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718],
|
||||
[3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791],
|
||||
[3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095],
|
||||
[4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205],
|
||||
[4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687],
|
||||
[4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968],
|
||||
[4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869],
|
||||
[5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102],
|
||||
[6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271],
|
||||
[6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592],
|
||||
[6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822],
|
||||
[6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167],
|
||||
[7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959],
|
||||
[7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143],
|
||||
[8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318],
|
||||
[8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483],
|
||||
[8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101],
|
||||
[10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567],
|
||||
[11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292],
|
||||
[12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444],
|
||||
[12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783],
|
||||
[12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311],
|
||||
[19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511],
|
||||
[42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774],
|
||||
[42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071],
|
||||
[43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263],
|
||||
[43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519],
|
||||
[43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647],
|
||||
[43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967],
|
||||
[44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295],
|
||||
[57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274],
|
||||
[64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007],
|
||||
[65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381],
|
||||
[65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]];
|
||||
for (i = 0; i < ranges.length; i++) {
|
||||
start = ranges[i][0];
|
||||
end = ranges[i][1];
|
||||
for (j = start; j <= end; j++) {
|
||||
result[j] = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
})();
|
||||
|
||||
function splitQuery(query) {
|
||||
var result = [];
|
||||
var start = -1;
|
||||
for (var i = 0; i < query.length; i++) {
|
||||
if (splitChars[query.charCodeAt(i)]) {
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start, i));
|
||||
start = -1;
|
||||
}
|
||||
} else if (start === -1) {
|
||||
start = i;
|
||||
}
|
||||
}
|
||||
if (start !== -1) {
|
||||
result.push(query.slice(start));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Search Module
|
||||
*/
|
||||
@@ -417,7 +138,6 @@ var Search = {
|
||||
*/
|
||||
query : function(query) {
|
||||
var i;
|
||||
var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"];
|
||||
|
||||
// stem the searchterms and add them to the correct list
|
||||
var stemmer = new Stemmer();
|
||||
@@ -758,4 +478,4 @@ var Search = {
|
||||
|
||||
$(document).ready(function() {
|
||||
Search.init();
|
||||
});
|
||||
});
|
||||
|
||||
Vendored
+1
-1
@@ -16,7 +16,7 @@
|
||||
* Once the browser is closed the cookie is deleted and the position
|
||||
* reset to the default (expanded).
|
||||
*
|
||||
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
*
|
||||
* sphinx.websupport utilities for all documentation.
|
||||
*
|
||||
* :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS.
|
||||
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
|
||||
* :license: BSD, see LICENSE for details.
|
||||
*
|
||||
*/
|
||||
|
||||
Vendored
+16
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>12. windows.alpc – Advanced Local Procedure Call — PythonForWindows 0.5 documentation</title>
|
||||
<title>12. windows.alpc – Advanced Local Procedure Call — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="13. windows.rpc – ALPC-based Windows RPC" href="rpc.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="crypto.html" title="11. windows.crypto – CryptoAPI"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -321,6 +324,12 @@ ALPC messages over an ALPC port and the classes representing these messages.</p>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.alpc.AlpcClient.port_name">
|
||||
<code class="descname">port_name</code><em class="property"> = None</em><a class="headerlink" href="#windows.alpc.AlpcClient.port_name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The name of the ALPC port the client is connect to.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.alpc.AlpcClient.recv">
|
||||
<code class="descname">recv</code><span class="sig-paren">(</span><em>receive_msg=None</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.alpc.AlpcClient.recv" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -492,7 +501,7 @@ ALPC messages over an ALPC port and the classes representing these messages.</p>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">12. <code class="docutils literal notranslate"><span class="pre">windows.alpc</span></code> – Advanced Local Procedure Call</a><ul>
|
||||
<li><a class="reference internal" href="#alpc-message">12.1. ALPC Message</a></li>
|
||||
@@ -546,12 +555,12 @@ ALPC messages over an ALPC port and the classes representing these messages.</p>
|
||||
<li class="right" >
|
||||
<a href="crypto.html" title="11. windows.crypto – CryptoAPI"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+10
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>10. windows.com - Component Object Model — PythonForWindows 0.5 documentation</title>
|
||||
<title>10. windows.com - Component Object Model — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="11. windows.crypto – CryptoAPI" href="crypto.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="debug.html" title="9. windows.debug – Debugging"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -134,7 +137,7 @@ You can then use the instance to call whatever method you need.</p>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">10. <code class="docutils literal notranslate"><span class="pre">windows.com</span></code> - Component Object Model</a><ul>
|
||||
<li><a class="reference internal" href="#using-a-com-interface">10.1. Using a COM interface</a></li>
|
||||
@@ -188,12 +191,12 @@ You can then use the instance to call whatever method you need.</p>
|
||||
<li class="right" >
|
||||
<a href="debug.html" title="9. windows.debug – Debugging"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+16
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>11. windows.crypto – CryptoAPI — PythonForWindows 0.5 documentation</title>
|
||||
<title>11. windows.crypto – CryptoAPI — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="12. windows.alpc – Advanced Local Procedure Call" href="alpc.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="com.html" title="10. windows.com - Component Object Model"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -507,6 +510,12 @@ See <a class="reference external" href="https://msdn.microsoft.com/en-us/library
|
||||
<dd><p>The list of <a class="reference internal" href="#windows.crypto.Certificate" title="windows.crypto.Certificate"><code class="xref py py-class docutils literal notranslate"><span class="pre">Certificate</span></code></a> embded in the message</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="classmethod">
|
||||
<dt id="windows.crypto.CryptMessage.from_buffer">
|
||||
<em class="property">classmethod </em><code class="descname">from_buffer</code><span class="sig-paren">(</span><em>object</em>, <em>offset=0</em><span class="sig-paren">)</span> → C instance<a class="reference internal" href="_modules/windows/crypto/cryptmsg.html#CryptMessage.from_buffer"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CryptMessage.from_buffer" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>create a C instance from a writeable buffer</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.crypto.CryptMessage.get_cert">
|
||||
<code class="descname">get_cert</code><span class="sig-paren">(</span><em>index=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/crypto/cryptmsg.html#CryptMessage.get_cert"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.crypto.CryptMessage.get_cert" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -680,7 +689,7 @@ See <a class="reference external" href="https://msdn.microsoft.com/en-us/library
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">11. <code class="docutils literal notranslate"><span class="pre">windows.crypto</span></code> – CryptoAPI</a><ul>
|
||||
<li><a class="reference internal" href="#encryption">11.1. Encryption</a><ul>
|
||||
@@ -751,12 +760,12 @@ See <a class="reference external" href="https://msdn.microsoft.com/en-us/library
|
||||
<li class="right" >
|
||||
<a href="com.html" title="10. windows.com - Component Object Model"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+733
-11
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>9. windows.debug – Debugging — PythonForWindows 0.5 documentation</title>
|
||||
<title>9. windows.debug – Debugging — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="10. windows.com - Component Object Model" href="com.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="wintrust.html" title="8. windows.wintrust – Checking signature"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -49,6 +52,11 @@
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">See sample <a class="reference internal" href="sample.html#sample-debugger"><span class="std std-ref">Debugging</span></a></p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>If you are interrested by symbols (PDB) handling, go to subsection <a class="reference internal" href="#debug-symbols-module"><span class="std std-ref">windows.debug.symbols – Using symbols</span></a>.</p>
|
||||
<p class="last">You can also look at the symbols-related samples: <a class="reference internal" href="sample.html#sample-symbols"><span class="std std-ref">Symbols</span></a></p>
|
||||
</div>
|
||||
<div class="section" id="debugger">
|
||||
<h2>9.1. <a class="reference internal" href="#windows.debug.Debugger" title="windows.debug.Debugger"><code class="xref py py-class docutils literal notranslate"><span class="pre">Debugger</span></code></a><a class="headerlink" href="#debugger" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The <a class="reference internal" href="#windows.debug.Debugger" title="windows.debug.Debugger"><code class="xref py py-class docutils literal notranslate"><span class="pre">Debugger</span></code></a> is the base class to perform the debugging of a remote process.
|
||||
@@ -360,9 +368,26 @@ and <code class="docutils literal notranslate"><span class="pre">DBG_EXCEPTION_N
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="symboldebugger">
|
||||
<h2>9.2. <a class="reference internal" href="#windows.debug.SymbolDebugger" title="windows.debug.SymbolDebugger"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolDebugger</span></code></a><a class="headerlink" href="#symboldebugger" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">See sample <a class="reference internal" href="sample.html#sample-symbol-debugger"><span class="std std-ref">SymbolDebugger</span></a></p>
|
||||
</div>
|
||||
<dl class="class">
|
||||
<dt id="windows.debug.SymbolDebugger">
|
||||
<em class="property">class </em><code class="descclassname">windows.debug.</code><code class="descname">SymbolDebugger</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/symboldbg.html#SymbolDebugger"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.SymbolDebugger" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">windows.debug.debugger.Debugger</span></code></p>
|
||||
<p>A debugger using the symbol API (hence PDB) for name resolution.
|
||||
To use PDB, a correct version of dbghelp should be configured as well as <code class="docutils literal notranslate"><span class="pre">_NT_SYMBOL_PATH</span></code>.
|
||||
(See <a class="reference internal" href="#debug-symbols-module"><span class="std std-ref">windows.debug.symbols – Using symbols</span></a>)</p>
|
||||
<p>This debugger add a <code class="docutils literal notranslate"><span class="pre">current_resolver</span></code> variable (A <a class="reference internal" href="#windows.debug.symbols.ProcessSymbolHandler" title="windows.debug.symbols.ProcessSymbolHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">ProcessSymbolHandler</span></code></a>) for the <code class="docutils literal notranslate"><span class="pre">current_process</span></code>.</p>
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="localdebugger">
|
||||
<h2>9.2. <a class="reference internal" href="#windows.debug.LocalDebugger" title="windows.debug.LocalDebugger"><code class="xref py py-class docutils literal notranslate"><span class="pre">LocalDebugger</span></code></a><a class="headerlink" href="#localdebugger" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>9.3. <a class="reference internal" href="#windows.debug.LocalDebugger" title="windows.debug.LocalDebugger"><code class="xref py py-class docutils literal notranslate"><span class="pre">LocalDebugger</span></code></a><a class="headerlink" href="#localdebugger" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">See sample <a class="reference internal" href="sample.html#sample-local-debugger"><span class="std std-ref">LocalDebugger</span></a></p>
|
||||
@@ -423,7 +448,7 @@ It is based on <code class="xref py py-func docutils literal notranslate"><span
|
||||
|
||||
</div>
|
||||
<div class="section" id="breakpoint">
|
||||
<h2>9.3. <a class="reference internal" href="#windows.debug.Breakpoint" title="windows.debug.Breakpoint"><code class="xref py py-class docutils literal notranslate"><span class="pre">Breakpoint</span></code></a><a class="headerlink" href="#breakpoint" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>9.4. <a class="reference internal" href="#windows.debug.Breakpoint" title="windows.debug.Breakpoint"><code class="xref py py-class docutils literal notranslate"><span class="pre">Breakpoint</span></code></a><a class="headerlink" href="#breakpoint" title="Permalink to this headline">¶</a></h2>
|
||||
<p>Standard breakpoints types expect an address as argument.</p>
|
||||
<p>An address can be:</p>
|
||||
<blockquote>
|
||||
@@ -506,6 +531,12 @@ It is based on <code class="xref py py-func docutils literal notranslate"><span
|
||||
<dd><p>Setup a breakpoint at the return address of the function, this breakpoint will call <a class="reference internal" href="#windows.debug.FunctionCallBP.ret_trigger" title="windows.debug.FunctionCallBP.ret_trigger"><code class="xref py py-func docutils literal notranslate"><span class="pre">ret_trigger()</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.FunctionCallBP.get_ret_addr">
|
||||
<code class="descname">get_ret_addr</code><span class="sig-paren">(</span><em>dbg</em>, <em>exception</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/breakpoints.html#FunctionCallBP.get_ret_addr"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.FunctionCallBP.get_ret_addr" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get the return address of the current target, only valid in the trigger() function.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.FunctionCallBP.ret_trigger">
|
||||
<code class="descname">ret_trigger</code><span class="sig-paren">(</span><em>dbg</em>, <em>exception</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/breakpoints.html#FunctionCallBP.ret_trigger"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.FunctionCallBP.ret_trigger" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -556,6 +587,12 @@ It is based on <code class="xref py py-func docutils literal notranslate"><span
|
||||
<dd><p>Extracts the functions parameters in an <code class="xref py py-class docutils literal notranslate"><span class="pre">OrderedDict</span></code></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.FunctionBP.get_ret_addr">
|
||||
<code class="descname">get_ret_addr</code><span class="sig-paren">(</span><em>dbg</em>, <em>exception</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.FunctionBP.get_ret_addr" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Get the return address of the current target, only valid in the trigger() function.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.FunctionBP.ret_trigger">
|
||||
<code class="descname">ret_trigger</code><span class="sig-paren">(</span><em>dbg</em>, <em>exception</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.FunctionBP.ret_trigger" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -573,6 +610,681 @@ It is based on <code class="xref py py-func docutils literal notranslate"><span
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">See sample <a class="reference internal" href="sample.html#sample-debugger-bp-functionbp"><span class="std std-ref">windows.debug.FunctionBP</span></a></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="module-windows.debug.symbols">
|
||||
<span id="windows-debug-symbols-using-symbols"></span><span id="debug-symbols-module"></span><h2>9.5. <a class="reference internal" href="#module-windows.debug.symbols" title="windows.debug.symbols"><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.debug.symbols</span></code></a> – Using symbols<a class="headerlink" href="#module-windows.debug.symbols" title="Permalink to this headline">¶</a></h2>
|
||||
<p>The <a class="reference internal" href="#module-windows.debug.symbols" title="windows.debug.symbols"><code class="xref py py-mod docutils literal notranslate"><span class="pre">windows.debug.symbols</span></code></a> module provide classes to load PDB and resolve name/address.
|
||||
In its current state, this module does not handle types.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">See samples <a class="reference internal" href="sample.html#sample-symbols"><span class="std std-ref">Symbols</span></a></p>
|
||||
</div>
|
||||
<div class="section" id="configuration">
|
||||
<h3>9.5.1. Configuration<a class="headerlink" href="#configuration" title="Permalink to this headline">¶</a></h3>
|
||||
<p>In order to be able to automatically download PDB and parse remote <code class="docutils literal notranslate"><span class="pre">_NT_SYMBOL_PATH</span></code>, a debug version of the DLL <cite>dbghelp.dll</cite> must be used.
|
||||
(See <a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/debug/dbghelp-versions">MSDN: DbgHelp Versions</a>)</p>
|
||||
<p>As it is NOT recommended to replace <code class="docutils literal notranslate"><span class="pre">system32/dbghelp.dll</span></code>, its path must be provided to PythonForWindows.
|
||||
This path must be provided before any call to the <code class="docutils literal notranslate"><span class="pre">dbghelp.dll</span></code> APIs.
|
||||
Also, the <code class="docutils literal notranslate"><span class="pre">symsrv.dll</span></code> DLL should be present in the same directory as <code class="docutils literal notranslate"><span class="pre">dbghelp.dll</span></code> (See <a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/debug/using-symsrv#installation">SymSrv Installation</a>)</p>
|
||||
<p>There is 2 ways to pass this information to <code class="docutils literal notranslate"><span class="pre">PythonForWindows</span></code>:</p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li>Using the function <a class="reference internal" href="#windows.debug.symbols.set_dbghelp_path" title="windows.debug.symbols.set_dbghelp_path"><code class="xref py py-func docutils literal notranslate"><span class="pre">set_dbghelp_path()</span></code></a></li>
|
||||
<li><dl class="first docutils">
|
||||
<dt>Using the environment variable <code class="docutils literal notranslate"><span class="pre">PFW_DBGHELP_PATH</span></code></dt>
|
||||
<dd><ul class="first last">
|
||||
<li>If this variable exists it will simply trigger a call to <code class="docutils literal notranslate"><span class="pre">set_dbghelp_path(PFW_DBGHELP_PATH)</span></code></li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>If the given path is a directory, the final path will be computer as <code class="docutils literal notranslate"><span class="pre">path\<current_process_bitness>\dbghelp.dll</span></code>.
|
||||
This allow to use the same script (or environment variable) transparently in bot 32b & 64b python interpreters.</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>For example, on my computer my setup is done through the environment variable: <code class="docutils literal notranslate"><span class="pre">PFW_DBGHELP_PATH=D:\pysym\bin</span></code></p>
|
||||
<p>This directory have the following layout:</p>
|
||||
<blockquote class="last">
|
||||
<div><div class="line-block">
|
||||
<div class="line">$ tree /A /F %PFW_DBGHELP_PATH%</div>
|
||||
<div class="line-block">
|
||||
<div class="line">D:\PYSYM\BIN</div>
|
||||
<div class="line">| symsrv.yes</div>
|
||||
<div class="line">|</div>
|
||||
<div class="line">+---32</div>
|
||||
<div class="line">| dbghelp.dll</div>
|
||||
<div class="line">| symsrv.dll</div>
|
||||
<div class="line">|</div>
|
||||
<div class="line">\---64</div>
|
||||
<div class="line-block">
|
||||
<div class="line">dbghelp.dll</div>
|
||||
<div class="line">symsrv.dll</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div></blockquote>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="helpers">
|
||||
<h3>9.5.2. Helpers<a class="headerlink" href="#helpers" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="function">
|
||||
<dt id="windows.debug.symbols.set_dbghelp_path">
|
||||
<code class="descclassname">windows.debug.symbols.</code><code class="descname">set_dbghelp_path</code><span class="sig-paren">(</span><em>path</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/symbols.html#set_dbghelp_path"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.symbols.set_dbghelp_path" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Set the path of the <code class="docutils literal notranslate"><span class="pre">dbghelp.dll</span></code> file to use. It allow to configure a different version of the DLL handling PDB downloading.</p>
|
||||
<p>If <code class="docutils literal notranslate"><span class="pre">path</span></code> is a directory, the final <code class="docutils literal notranslate"><span class="pre">dbghelp.dll</span></code> will be computed as
|
||||
<code class="docutils literal notranslate"><span class="pre">path\<current_process_bitness>\dbghelp.dll</span></code>.</p>
|
||||
<p>This allow to use the same script transparently in both 32b & 64b python interpreters.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="windows.debug.symbols.SymbolEngine">
|
||||
<em class="property">class </em><code class="descclassname">windows.debug.symbols.</code><code class="descname">SymbolEngine</code><a class="reference internal" href="_modules/windows/debug/symbols.html#SymbolEngine"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.symbols.SymbolEngine" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Represent the global symbol engine. Just a proxy to get/set global engine options</p>
|
||||
<p>Its instance can be accessed using <code class="docutils literal notranslate"><span class="pre">windows.debug.symbols.engine</span></code></p>
|
||||
<p>Exemple:</p>
|
||||
<div class="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">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">engine</span><span class="o">.</span><span class="n">options</span>
|
||||
<span class="go">6L</span>
|
||||
<span class="gp">>>> </span><span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">engine</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="n">gdef</span><span class="o">.</span><span class="n">SYMOPT_UNDNAME</span>
|
||||
<span class="gp">>>> </span><span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">engine</span><span class="o">.</span><span class="n">options</span>
|
||||
<span class="go">2L</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolEngine.options">
|
||||
<code class="descname">options</code><a class="headerlink" href="#windows.debug.symbols.SymbolEngine.options" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The options of the Symbol engine
|
||||
(<a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/nf-dbghelp-symsetoptions#parameters">see options</a>)</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">Default options are: <code class="docutils literal notranslate"><span class="pre">gdef.SYMOPT_DEFERRED_LOADS</span> <span class="pre">+</span> <span class="pre">gdef.SYMOPT_UNDNAME</span></code></p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="virtualsymbolhandler">
|
||||
<h3>9.5.3. <a class="reference internal" href="#windows.debug.symbols.VirtualSymbolHandler" title="windows.debug.symbols.VirtualSymbolHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">VirtualSymbolHandler</span></code></a><a class="headerlink" href="#virtualsymbolhandler" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler">
|
||||
<em class="property">class </em><code class="descclassname">windows.debug.symbols.</code><code class="descname">VirtualSymbolHandler</code><span class="sig-paren">(</span><em>search_path=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/symbols.html#VirtualSymbolHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">windows.debug.symbols.SymbolHandler</span></code></p>
|
||||
<p>A SymbolHandler where its handle is not a valid process handle
|
||||
Allow to create/resolve symbol in a ‘virtual’ process
|
||||
But all API needing a real process handle will fail</p>
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler.__getitem__">
|
||||
<code class="descname">__getitem__</code><span class="sig-paren">(</span><em>name_or_addr</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler.__getitem__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Resolve <code class="docutils literal notranslate"><span class="pre">name_or_addr</span></code>.</p>
|
||||
<p>If its an int -> Return the <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a> at the address.
|
||||
If its a string -> Return the <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a> corresponding to the symbol name</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><code class="docutils literal notranslate"><span class="pre">__getitem__</span></code> is an alias for <code class="docutils literal notranslate"><span class="pre">resolve()</span></code></p>
|
||||
</div>
|
||||
<p>Exemple:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">VirtualSymbolHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span> <span class="o">=</span> <span class="n">sh</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="sa">r</span><span class="s2">"c:\windows\system32\kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span>
|
||||
<span class="go"><SymbolModule name="kernelbase" type=SymPdb pdb="wkernelbase.pdb" addr=0x10000000></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">resolve</span><span class="p">(</span><span class="s2">"kernelbase!CreateFileInternal"</span><span class="p">)</span>
|
||||
<span class="go"><SymbolInfoA name="CreateFileInternal" addr=0x100f2120 tag=SymTagFunction></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="p">[</span><span class="mh">0x100f2042</span><span class="p">]</span>
|
||||
<span class="go"><SymbolInfoA name="ReadFile" addr=0x100f1ee0 displacement=0x162 tag=SymTagFunction></span>
|
||||
<span class="gp">>>> </span><span class="nb">str</span><span class="p">(</span><span class="n">sh</span><span class="p">[</span><span class="mh">0x100f2042</span><span class="p">])</span>
|
||||
<span class="go">'kernelbase!ReadFile+0x162'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler.load">
|
||||
<code class="descname">load</code><span class="sig-paren">(</span><em>path</em>, <em>name=None</em>, <em>addr=0</em>, <em>size=0</em>, <em>data=None</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler.load" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>An alias for <a class="reference internal" href="#windows.debug.symbols.VirtualSymbolHandler.load_file" title="windows.debug.symbols.VirtualSymbolHandler.load_file"><code class="xref py py-func docutils literal notranslate"><span class="pre">VirtualSymbolHandler.load_file()</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler.load_file">
|
||||
<code class="descname">load_file</code><span class="sig-paren">(</span><em>path</em>, <em>name=None</em>, <em>addr=0</em>, <em>size=0</em>, <em>data=None</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler.load_file" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Load the module <code class="docutils literal notranslate"><span class="pre">path</span></code> at <code class="docutils literal notranslate"><span class="pre">addr</span></code></p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a> – The loaded module</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler.load_module">
|
||||
<code class="descname">load_module</code><span class="sig-paren">(</span><em>file_handle=None</em>, <em>path=None</em>, <em>name=None</em>, <em>addr=0</em>, <em>size=0</em>, <em>data=None</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler.load_module" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Load a module at a given <code class="docutils literal notranslate"><span class="pre">addr</span></code>. The module to load can be pass via a <code class="docutils literal notranslate"><span class="pre">file_handle</span></code>
|
||||
or the direct <code class="docutils literal notranslate"><span class="pre">path</span></code> of the file to load.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a> – The loaded module</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">The logic of <code class="docutils literal notranslate"><span class="pre">SymLoadModuleEx</span></code> seems somewhat strange about the naming of the loaded module.
|
||||
A custom module <code class="docutils literal notranslate"><span class="pre">name</span></code> is only taken into account if the file is passed via a File handle.
|
||||
To make it more intuitive, if this function is call with a <code class="docutils literal notranslate"><span class="pre">path</span></code> and <code class="docutils literal notranslate"><span class="pre">name</span></code> and no <code class="docutils literal notranslate"><span class="pre">file_handle</span></code>,
|
||||
it will open the path and directly call <code class="docutils literal notranslate"><span class="pre">SymLoadModuleEx</span></code> with a file handle and a name.</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler.modules">
|
||||
<code class="descname">modules</code><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler.modules" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The list of loaded modules</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">[<a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a>] – A list of modules</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler.refresh">
|
||||
<code class="descname">refresh</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/symbols.html#VirtualSymbolHandler.refresh"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler.refresh" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Do nothing for a <a class="reference internal" href="#windows.debug.symbols.VirtualSymbolHandler" title="windows.debug.symbols.VirtualSymbolHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">VirtualSymbolHandler</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler.resolve">
|
||||
<code class="descname">resolve</code><span class="sig-paren">(</span><em>name_or_addr</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler.resolve" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Resolve <code class="docutils literal notranslate"><span class="pre">name_or_addr</span></code>.</p>
|
||||
<p>If its an int -> Return the <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a> at the address.
|
||||
If its a string -> Return the <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a> corresponding to the symbol name</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><code class="docutils literal notranslate"><span class="pre">__getitem__</span></code> is an alias for <code class="docutils literal notranslate"><span class="pre">resolve()</span></code></p>
|
||||
</div>
|
||||
<p>Exemple:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">VirtualSymbolHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span> <span class="o">=</span> <span class="n">sh</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="sa">r</span><span class="s2">"c:\windows\system32\kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span>
|
||||
<span class="go"><SymbolModule name="kernelbase" type=SymPdb pdb="wkernelbase.pdb" addr=0x10000000></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">resolve</span><span class="p">(</span><span class="s2">"kernelbase!CreateFileInternal"</span><span class="p">)</span>
|
||||
<span class="go"><SymbolInfoA name="CreateFileInternal" addr=0x100f2120 tag=SymTagFunction></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="p">[</span><span class="mh">0x100f2042</span><span class="p">]</span>
|
||||
<span class="go"><SymbolInfoA name="ReadFile" addr=0x100f1ee0 displacement=0x162 tag=SymTagFunction></span>
|
||||
<span class="gp">>>> </span><span class="nb">str</span><span class="p">(</span><span class="n">sh</span><span class="p">[</span><span class="mh">0x100f2042</span><span class="p">])</span>
|
||||
<span class="go">'kernelbase!ReadFile+0x162'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler.search">
|
||||
<code class="descname">search</code><span class="sig-paren">(</span><em>mask</em>, <em>mod=0</em>, <em>tag=0</em>, <em>options=SYMSEARCH_ALLITEMS(0x8)</em>, <em>callback=None</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler.search" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Search the symbols matching <code class="docutils literal notranslate"><span class="pre">mask</span></code> (<code class="docutils literal notranslate"><span class="pre">Windbg</span></code> like).</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">[<a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a>] – A list of <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">VirtualSymbolHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span> <span class="o">=</span> <span class="n">sh</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="sa">r</span><span class="s2">"c:\windows\system32\kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s2">"kernelbase!CreateFile*"</span><span class="p">)</span>
|
||||
<span class="go">[<SymbolInfoA name="CreateFileInternal" addr=0x100f2120 tag=SymTagFunction>,</span>
|
||||
<span class="go"> <SymbolInfoA name="CreateFileMoniker" addr=0x10117d80 tag=SymTagFunction>,</span>
|
||||
<span class="go"> <SymbolInfoA name="CreateFile2" addr=0x1011e690 tag=SymTagFunction>,</span>
|
||||
<span class="go"> ...]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.VirtualSymbolHandler.unload">
|
||||
<code class="descname">unload</code><span class="sig-paren">(</span><em>addr</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.VirtualSymbolHandler.unload" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Unload the module at <code class="docutils literal notranslate"><span class="pre">addr</span></code></p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="processsymbolhandler">
|
||||
<h3>9.5.4. <a class="reference internal" href="#windows.debug.symbols.ProcessSymbolHandler" title="windows.debug.symbols.ProcessSymbolHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">ProcessSymbolHandler</span></code></a><a class="headerlink" href="#processsymbolhandler" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler">
|
||||
<em class="property">class </em><code class="descclassname">windows.debug.symbols.</code><code class="descname">ProcessSymbolHandler</code><span class="sig-paren">(</span><em>process</em>, <em>search_path=None</em>, <em>invade_process=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/symbols.html#ProcessSymbolHandler"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">windows.debug.symbols.SymbolHandler</span></code></p>
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler.__getitem__">
|
||||
<code class="descname">__getitem__</code><span class="sig-paren">(</span><em>name_or_addr</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler.__getitem__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Resolve <code class="docutils literal notranslate"><span class="pre">name_or_addr</span></code>.</p>
|
||||
<p>If its an int -> Return the <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a> at the address.
|
||||
If its a string -> Return the <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a> corresponding to the symbol name</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><code class="docutils literal notranslate"><span class="pre">__getitem__</span></code> is an alias for <code class="docutils literal notranslate"><span class="pre">resolve()</span></code></p>
|
||||
</div>
|
||||
<p>Exemple:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">VirtualSymbolHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span> <span class="o">=</span> <span class="n">sh</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="sa">r</span><span class="s2">"c:\windows\system32\kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span>
|
||||
<span class="go"><SymbolModule name="kernelbase" type=SymPdb pdb="wkernelbase.pdb" addr=0x10000000></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">resolve</span><span class="p">(</span><span class="s2">"kernelbase!CreateFileInternal"</span><span class="p">)</span>
|
||||
<span class="go"><SymbolInfoA name="CreateFileInternal" addr=0x100f2120 tag=SymTagFunction></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="p">[</span><span class="mh">0x100f2042</span><span class="p">]</span>
|
||||
<span class="go"><SymbolInfoA name="ReadFile" addr=0x100f1ee0 displacement=0x162 tag=SymTagFunction></span>
|
||||
<span class="gp">>>> </span><span class="nb">str</span><span class="p">(</span><span class="n">sh</span><span class="p">[</span><span class="mh">0x100f2042</span><span class="p">])</span>
|
||||
<span class="go">'kernelbase!ReadFile+0x162'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler.load">
|
||||
<code class="descname">load</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/symbols.html#ProcessSymbolHandler.load"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler.load" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Load the <a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a> associated with the loaded module <code class="docutils literal notranslate"><span class="pre">name</span></code> (as found in the PEB)</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>Exemple:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">ProcessSymbolHandler</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">test</span><span class="o">.</span><span class="n">pop_proc_64</span><span class="p">())</span>
|
||||
<span class="go"><windows.debug.symbols.ProcessSymbolHandler object at 0x033A2C30></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span>
|
||||
<span class="go"><windows.debug.symbols.ProcessSymbolHandler object at 0x033A2C30></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">load</span><span class="p">(</span><span class="s2">"kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="go"><SymbolModule name="kernelbase" type=SymDeferred pdb="" addr=0x7ffb5b090000></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="p">[</span><span class="s2">"kernelbase!CreateProcessA"</span><span class="p">]</span>
|
||||
<span class="go"><SymbolInfoA name="CreateProcessA" start=0x7ffb5b2371f0 tag=SymTagPublicSymbol></span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler.load_file">
|
||||
<code class="descname">load_file</code><span class="sig-paren">(</span><em>path</em>, <em>name=None</em>, <em>addr=0</em>, <em>size=0</em>, <em>data=None</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler.load_file" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Load the module <code class="docutils literal notranslate"><span class="pre">path</span></code> at <code class="docutils literal notranslate"><span class="pre">addr</span></code></p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a> – The loaded module</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler.load_module">
|
||||
<code class="descname">load_module</code><span class="sig-paren">(</span><em>file_handle=None</em>, <em>path=None</em>, <em>name=None</em>, <em>addr=0</em>, <em>size=0</em>, <em>data=None</em>, <em>flags=0</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler.load_module" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Load a module at a given <code class="docutils literal notranslate"><span class="pre">addr</span></code>. The module to load can be pass via a <code class="docutils literal notranslate"><span class="pre">file_handle</span></code>
|
||||
or the direct <code class="docutils literal notranslate"><span class="pre">path</span></code> of the file to load.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a> – The loaded module</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">The logic of <code class="docutils literal notranslate"><span class="pre">SymLoadModuleEx</span></code> seems somewhat strange about the naming of the loaded module.
|
||||
A custom module <code class="docutils literal notranslate"><span class="pre">name</span></code> is only taken into account if the file is passed via a File handle.
|
||||
To make it more intuitive, if this function is call with a <code class="docutils literal notranslate"><span class="pre">path</span></code> and <code class="docutils literal notranslate"><span class="pre">name</span></code> and no <code class="docutils literal notranslate"><span class="pre">file_handle</span></code>,
|
||||
it will open the path and directly call <code class="docutils literal notranslate"><span class="pre">SymLoadModuleEx</span></code> with a file handle and a name.</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler.modules">
|
||||
<code class="descname">modules</code><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler.modules" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The list of loaded modules</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">[<a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a>] – A list of modules</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler.refresh">
|
||||
<code class="descname">refresh</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/symbols.html#ProcessSymbolHandler.refresh"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler.refresh" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Update the list of loaded modules to match the modules present in the target process</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p>This function only call <a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/nf-dbghelp-symrefreshmodulelist">SymRefreshModuleList</a> for now.
|
||||
It seems that this function do not handle refreshing a 64b target from a 32b python</p>
|
||||
<p class="last">Also, on a 32b target from a 64b python it seems to only load symbols for the 64b modules (ntdll + syswow dll)</p>
|
||||
</div>
|
||||
<p>Exemple:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">ProcessSymbolHandler</span><span class="p">(</span><span class="n">windows</span><span class="o">.</span><span class="n">test</span><span class="o">.</span><span class="n">pop_proc_64</span><span class="p">())</span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">modules</span>
|
||||
<span class="go">[]</span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">refresh</span><span class="p">()</span>
|
||||
<span class="go">44</span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">modules</span>
|
||||
<span class="go">[<SymbolModule name="notepad" type=SymDeferred pdb="" addr=0x7ff772b80000>,</span>
|
||||
<span class="go"> <SymbolModule name="ntdll" type=SymDeferred pdb="" addr=0x7ffb5d860000>,</span>
|
||||
<span class="go"> <SymbolModule name="KERNEL32" type=SymDeferred pdb="" addr=0x7ffb5bb90000>,</span>
|
||||
<span class="go"> <SymbolModule name="KERNELBASE" type=SymDeferred pdb="" addr=0x7ffb5b090000>,</span>
|
||||
<span class="go"> ...]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler.resolve">
|
||||
<code class="descname">resolve</code><span class="sig-paren">(</span><em>name_or_addr</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler.resolve" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Resolve <code class="docutils literal notranslate"><span class="pre">name_or_addr</span></code>.</p>
|
||||
<p>If its an int -> Return the <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a> at the address.
|
||||
If its a string -> Return the <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a> corresponding to the symbol name</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last"><code class="docutils literal notranslate"><span class="pre">__getitem__</span></code> is an alias for <code class="docutils literal notranslate"><span class="pre">resolve()</span></code></p>
|
||||
</div>
|
||||
<p>Exemple:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">VirtualSymbolHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span> <span class="o">=</span> <span class="n">sh</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="sa">r</span><span class="s2">"c:\windows\system32\kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span>
|
||||
<span class="go"><SymbolModule name="kernelbase" type=SymPdb pdb="wkernelbase.pdb" addr=0x10000000></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">resolve</span><span class="p">(</span><span class="s2">"kernelbase!CreateFileInternal"</span><span class="p">)</span>
|
||||
<span class="go"><SymbolInfoA name="CreateFileInternal" addr=0x100f2120 tag=SymTagFunction></span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="p">[</span><span class="mh">0x100f2042</span><span class="p">]</span>
|
||||
<span class="go"><SymbolInfoA name="ReadFile" addr=0x100f1ee0 displacement=0x162 tag=SymTagFunction></span>
|
||||
<span class="gp">>>> </span><span class="nb">str</span><span class="p">(</span><span class="n">sh</span><span class="p">[</span><span class="mh">0x100f2042</span><span class="p">])</span>
|
||||
<span class="go">'kernelbase!ReadFile+0x162'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler.search">
|
||||
<code class="descname">search</code><span class="sig-paren">(</span><em>mask</em>, <em>mod=0</em>, <em>tag=0</em>, <em>options=SYMSEARCH_ALLITEMS(0x8)</em>, <em>callback=None</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler.search" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Search the symbols matching <code class="docutils literal notranslate"><span class="pre">mask</span></code> (<code class="docutils literal notranslate"><span class="pre">Windbg</span></code> like).</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">[<a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a>] – A list of <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">VirtualSymbolHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span> <span class="o">=</span> <span class="n">sh</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="sa">r</span><span class="s2">"c:\windows\system32\kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">sh</span><span class="o">.</span><span class="n">search</span><span class="p">(</span><span class="s2">"kernelbase!CreateFile*"</span><span class="p">)</span>
|
||||
<span class="go">[<SymbolInfoA name="CreateFileInternal" addr=0x100f2120 tag=SymTagFunction>,</span>
|
||||
<span class="go"> <SymbolInfoA name="CreateFileMoniker" addr=0x10117d80 tag=SymTagFunction>,</span>
|
||||
<span class="go"> <SymbolInfoA name="CreateFile2" addr=0x1011e690 tag=SymTagFunction>,</span>
|
||||
<span class="go"> ...]</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.ProcessSymbolHandler.unload">
|
||||
<code class="descname">unload</code><span class="sig-paren">(</span><em>addr</em><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.ProcessSymbolHandler.unload" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Unload the module at <code class="docutils literal notranslate"><span class="pre">addr</span></code></p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="symbolmodule">
|
||||
<h3>9.5.5. <a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a><a class="headerlink" href="#symbolmodule" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.debug.symbols.SymbolModule">
|
||||
<em class="property">class </em><code class="descclassname">windows.debug.symbols.</code><code class="descname">SymbolModule</code><span class="sig-paren">(</span><em>resolver</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/debug/symbols.html#SymbolModule"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.symbols.SymbolModule" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs._IMAGEHLP_MODULE64" title="windows.generated_def.winstructs._IMAGEHLP_MODULE64"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs._IMAGEHLP_MODULE64</span></code></a></p>
|
||||
<p>Represent a loaded symbol module
|
||||
(see <a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/ns-dbghelp-imagehlp_module64">MSDN IMAGEHLP_MODULE64</a>)</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">This represent a module in the <code class="docutils literal notranslate"><span class="pre">symbol</span> <span class="pre">space</span></code> for symbol resolution.
|
||||
This can be completly virtual (particularly in the case of <a class="reference internal" href="#windows.debug.symbols.VirtualSymbolHandler" title="windows.debug.symbols.VirtualSymbolHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">VirtualSymbolHandler</span></code></a></p>
|
||||
</div>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolModule.addr">
|
||||
<code class="descname">addr</code><a class="headerlink" href="#windows.debug.symbols.SymbolModule.addr" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The load address of the module</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolModule.name">
|
||||
<code class="descname">name</code><a class="headerlink" href="#windows.debug.symbols.SymbolModule.name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The name of the module</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolModule.path">
|
||||
<code class="descname">path</code><a class="headerlink" href="#windows.debug.symbols.SymbolModule.path" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The full path and file name of the file from which symbols were loaded.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolModule.pdb">
|
||||
<code class="descname">pdb</code><a class="headerlink" href="#windows.debug.symbols.SymbolModule.pdb" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The local path of the loaded PDB if present</p>
|
||||
<dl class="docutils">
|
||||
<dt>Exemple:</dt>
|
||||
<dd><div class="first last highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">VirtualSymbolHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span> <span class="o">=</span> <span class="n">sh</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="sa">r</span><span class="s2">"c:\windows\system32\kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span><span class="o">.</span><span class="n">pdb</span>
|
||||
<span class="go">'d:\symbols\wkernelbase.pdb\017FA9C5278235B7E6BFBA74A9A5AAD91\wkernelbase.pdb'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolModule.type">
|
||||
<code class="descname">type</code><a class="headerlink" href="#windows.debug.symbols.SymbolModule.type" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The type of module (<a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.SYM_TYPE" title="windows.generated_def.winstructs.SYM_TYPE"><code class="xref py py-class docutils literal notranslate"><span class="pre">SYM_TYPE</span></code></a>),
|
||||
which can be one of:</p>
|
||||
<blockquote>
|
||||
<div><table border="1" class="docutils">
|
||||
<colgroup>
|
||||
<col width="14%" />
|
||||
<col width="86%" />
|
||||
</colgroup>
|
||||
<tbody valign="top">
|
||||
<tr class="row-odd"><td>SymCoff</td>
|
||||
<td>COFF symbols.</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>SymCv</td>
|
||||
<td>CodeView symbols.</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>SymDeferred</td>
|
||||
<td>Symbol loading deferred.</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>SymDia</td>
|
||||
<td>DIA symbols.</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>SymExport</td>
|
||||
<td>Symbols generated from a DLL export table.</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>SymNone</td>
|
||||
<td>No symbols are loaded.</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>SymPdb</td>
|
||||
<td>PDB symbols.</td>
|
||||
</tr>
|
||||
<tr class="row-even"><td>SymSym</td>
|
||||
<td>.sym file.</td>
|
||||
</tr>
|
||||
<tr class="row-odd"><td>SymVirtual</td>
|
||||
<td>The virtual module created by SymLoadModuleEx with SLMFLAG_VIRTUAL.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div></blockquote>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="symbolinfo">
|
||||
<h3>9.5.6. <a class="reference internal" href="#windows.debug.symbols.SymbolInfo" title="windows.debug.symbols.SymbolInfo"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a><a class="headerlink" href="#symbolinfo" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolInfo">
|
||||
<code class="descclassname">windows.debug.symbols.</code><code class="descname">SymbolInfo</code><a class="headerlink" href="#windows.debug.symbols.SymbolInfo" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="#windows.debug.symbols.SymbolInfoA" title="windows.debug.symbols.SymbolInfoA"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.debug.symbols.SymbolInfoA</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="class">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA">
|
||||
<em class="property">class </em><code class="descclassname">windows.debug.symbols.</code><code class="descname">SymbolInfoA</code><a class="reference internal" href="_modules/windows/debug/symbols.html#SymbolInfoA"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Bases: <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs._SYMBOL_INFO" title="windows.generated_def.winstructs._SYMBOL_INFO"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs._SYMBOL_INFO</span></code></a>, <code class="xref py py-class docutils literal notranslate"><span class="pre">windows.debug.symbols.SymbolInfoBase</span></code></p>
|
||||
<p>Represent a Symbol.
|
||||
This class in based on the class <a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/ns-dbghelp-symbol_info">SYMBOL_INFO</a>
|
||||
with the handling on displacement embeded into it.s</p>
|
||||
<p>Exemple:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="n">sh</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">debug</span><span class="o">.</span><span class="n">symbols</span><span class="o">.</span><span class="n">VirtualSymbolHandler</span><span class="p">()</span>
|
||||
<span class="gp">>>> </span><span class="n">mod</span> <span class="o">=</span> <span class="n">sh</span><span class="o">.</span><span class="n">load_file</span><span class="p">(</span><span class="sa">r</span><span class="s2">"c:\windows\system32\kernelbase.dll"</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">sym1</span> <span class="o">=</span> <span class="n">sh</span><span class="p">[</span><span class="s2">"kernelbase!CreateFileW"</span><span class="p">]</span>
|
||||
<span class="gp">>>> </span><span class="n">sym2</span> <span class="o">=</span> <span class="n">sh</span><span class="p">[</span><span class="nb">int</span><span class="p">(</span><span class="n">sym1</span><span class="p">)</span> <span class="o">+</span> <span class="mi">3</span><span class="p">]</span>
|
||||
<span class="gp">>>> </span><span class="n">sym2</span>
|
||||
<span class="go"><SymbolInfoA name="CreateFileW" start=0x100f20b0 displacement=0x3 tag=SymTagPublicSymbol></span>
|
||||
<span class="gp">>>> </span><span class="nb">hex</span><span class="p">(</span><span class="n">sym2</span><span class="o">.</span><span class="n">start</span><span class="p">)</span>
|
||||
<span class="go">'0x100f20b0L'</span>
|
||||
<span class="gp">>>> </span><span class="nb">hex</span><span class="p">(</span><span class="n">sym2</span><span class="o">.</span><span class="n">addr</span><span class="p">)</span>
|
||||
<span class="go">'0x100f20b3L'</span>
|
||||
<span class="gp">>>> </span><span class="nb">hex</span><span class="p">(</span><span class="n">sym2</span><span class="o">.</span><span class="n">displacement</span><span class="p">)</span>
|
||||
<span class="go">'0x3L'</span>
|
||||
<span class="gp">>>> </span><span class="nb">str</span><span class="p">(</span><span class="n">sym2</span><span class="p">)</span>
|
||||
<span class="go">'kernelbase!CreateFileW+0x3'</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.displacement">
|
||||
<code class="descname">displacement</code><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.displacement" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The displacement between the addresse and the start of the symbol (name)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.CHAR_TYPE">
|
||||
<code class="descname">CHAR_TYPE</code><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.CHAR_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference external" href="https://docs.python.org/2.7/library/ctypes.html#ctypes.c_char" title="(in Python v2.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">ctypes.c_char</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.__int__">
|
||||
<code class="descname">__int__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.__int__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>An alias for <code class="docutils literal notranslate"><span class="pre">addr</span></code></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.__str__">
|
||||
<code class="descname">__str__</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.__str__" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The fullname of the symbol in the windbg format <code class="docutils literal notranslate"><span class="pre">mod!sym+displacement</span></code></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.addr">
|
||||
<code class="descname">addr</code><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.addr" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The address of the symbol</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.fullname">
|
||||
<code class="descname">fullname</code><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.fullname" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The fullname of the symbol in the windbg format <code class="docutils literal notranslate"><span class="pre">mod!sym+displacement</span></code></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.module">
|
||||
<code class="descname">module</code><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.module" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The module containing the symbol</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference internal" href="#windows.debug.symbols.SymbolModule" title="windows.debug.symbols.SymbolModule"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymbolModule</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.name">
|
||||
<code class="descname">name</code><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The name of the symbol</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.start">
|
||||
<code class="descname">start</code><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.start" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The address of the start of the symbol
|
||||
If the symbol include a displacement, it is not taken into account</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.debug.symbols.SymbolInfoA.tag">
|
||||
<code class="descname">tag</code><a class="headerlink" href="#windows.debug.symbols.SymbolInfoA.tag" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The Tag of the module</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.SymTagEnum" title="windows.generated_def.winstructs.SymTagEnum"><code class="xref py py-class docutils literal notranslate"><span class="pre">SymTagEnum</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -583,12 +1295,22 @@ It is based on <code class="xref py py-func docutils literal notranslate"><span
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">9. <code class="docutils literal notranslate"><span class="pre">windows.debug</span></code> – Debugging</a><ul>
|
||||
<li><a class="reference internal" href="#debugger">9.1. <code class="docutils literal notranslate"><span class="pre">Debugger</span></code></a></li>
|
||||
<li><a class="reference internal" href="#localdebugger">9.2. <code class="docutils literal notranslate"><span class="pre">LocalDebugger</span></code></a></li>
|
||||
<li><a class="reference internal" href="#breakpoint">9.3. <code class="docutils literal notranslate"><span class="pre">Breakpoint</span></code></a></li>
|
||||
<li><a class="reference internal" href="#symboldebugger">9.2. <code class="docutils literal notranslate"><span class="pre">SymbolDebugger</span></code></a></li>
|
||||
<li><a class="reference internal" href="#localdebugger">9.3. <code class="docutils literal notranslate"><span class="pre">LocalDebugger</span></code></a></li>
|
||||
<li><a class="reference internal" href="#breakpoint">9.4. <code class="docutils literal notranslate"><span class="pre">Breakpoint</span></code></a></li>
|
||||
<li><a class="reference internal" href="#module-windows.debug.symbols">9.5. <code class="docutils literal notranslate"><span class="pre">windows.debug.symbols</span></code> – Using symbols</a><ul>
|
||||
<li><a class="reference internal" href="#configuration">9.5.1. Configuration</a></li>
|
||||
<li><a class="reference internal" href="#helpers">9.5.2. Helpers</a></li>
|
||||
<li><a class="reference internal" href="#virtualsymbolhandler">9.5.3. <code class="docutils literal notranslate"><span class="pre">VirtualSymbolHandler</span></code></a></li>
|
||||
<li><a class="reference internal" href="#processsymbolhandler">9.5.4. <code class="docutils literal notranslate"><span class="pre">ProcessSymbolHandler</span></code></a></li>
|
||||
<li><a class="reference internal" href="#symbolmodule">9.5.5. <code class="docutils literal notranslate"><span class="pre">SymbolModule</span></code></a></li>
|
||||
<li><a class="reference internal" href="#symbolinfo">9.5.6. <code class="docutils literal notranslate"><span class="pre">SymbolInfo</span></code></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -637,12 +1359,12 @@ It is based on <code class="xref py py-func docutils literal notranslate"><span
|
||||
<li class="right" >
|
||||
<a href="wintrust.html" title="8. windows.wintrust – Checking signature"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+748
@@ -0,0 +1,748 @@
|
||||
|
||||
<!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>2.14. Device Manager — PythonForWindows 0.6 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" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="2.15. Task scheduler" href="task_scheduler.html" />
|
||||
<link rel="prev" title="2.13. Object Manager – Kernel objects" href="object_manager.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="task_scheduler.html" title="2.15. Task scheduler"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="object_manager.html" title="2.13. Object Manager – Kernel objects"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U">2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body" role="main">
|
||||
|
||||
<div class="section" id="module-windows.winobject.device_manager">
|
||||
<span id="device-manager"></span><h1>2.14. Device Manager<a class="headerlink" href="#module-windows.winobject.device_manager" title="Permalink to this headline">¶</a></h1>
|
||||
<p>The <a class="reference internal" href="#windows.winobject.device_manager.DeviceManager" title="windows.winobject.device_manager.DeviceManager"><code class="xref py py-class docutils literal notranslate"><span class="pre">DeviceManager</span></code></a> instance is accessible via <a class="reference internal" href="windows.html#windows.winobject.system.System.device_manager" title="windows.winobject.system.System.device_manager"><code class="xref py py-attr docutils literal notranslate"><span class="pre">windows.system.device_manager</span></code></a></p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">See sample at <a class="reference internal" href="sample.html#sample-device-manager"><span class="std std-ref">Device manager</span></a></p>
|
||||
</div>
|
||||
<div class="section" id="devicemanager">
|
||||
<h2>2.14.1. DeviceManager<a class="headerlink" href="#devicemanager" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.DeviceManager">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">DeviceManager</code><a class="reference internal" href="_modules/windows/winobject/device_manager.html#DeviceManager"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.DeviceManager" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Represent the device manager</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceManager.classes">
|
||||
<code class="descname">classes</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceManager.classes" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The list of installed device classes.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">[<a class="reference internal" href="#windows.winobject.device_manager.DeviceClass" title="windows.winobject.device_manager.DeviceClass"><code class="xref py py-class docutils literal notranslate"><span class="pre">DeviceClass</span></code></a>] – A list of <a class="reference internal" href="#windows.winobject.device_manager.DeviceClass" title="windows.winobject.device_manager.DeviceClass"><code class="xref py py-class docutils literal notranslate"><span class="pre">DeviceClass</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="deviceclass">
|
||||
<h2>2.14.2. DeviceClass<a class="headerlink" href="#deviceclass" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.DeviceClass">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">DeviceClass</code><a class="reference internal" href="_modules/windows/winobject/device_manager.html#DeviceClass"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.DeviceClass" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A Device class, which is mainly a <code class="xref py py-class docutils literal notranslate"><span class="pre">GUID</span></code> with additional attributes</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceClass.devices">
|
||||
<code class="descname">devices</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceClass.devices" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The set of devices of the current class.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference internal" href="#windows.winobject.device_manager.DeviceInformationSet" title="windows.winobject.device_manager.DeviceInformationSet"><code class="xref py py-class docutils literal notranslate"><span class="pre">DeviceInformationSet</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceClass.name">
|
||||
<code class="descname">name</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceClass.name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The name of the device class</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="deviceinformationset">
|
||||
<h2>2.14.3. DeviceInformationSet<a class="headerlink" href="#deviceinformationset" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.DeviceInformationSet">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">DeviceInformationSet</code><a class="reference internal" href="_modules/windows/winobject/device_manager.html#DeviceInformationSet"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.DeviceInformationSet" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A device instances, can be itered to retrieve the underliyings <a class="reference internal" href="#windows.winobject.device_manager.DeviceInstance" title="windows.winobject.device_manager.DeviceInstance"><code class="xref py py-class docutils literal notranslate"><span class="pre">DeviceInstance</span></code></a></p>
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.device_manager.DeviceInformationSet.enum_device_interface">
|
||||
<code class="descname">enum_device_interface</code><span class="sig-paren">(</span><em>index</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#DeviceInformationSet.enum_device_interface"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.DeviceInformationSet.enum_device_interface" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Not Implemented Yet</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInformationSet.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInformationSet.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="deviceinstance">
|
||||
<h2>2.14.4. DeviceInstance<a class="headerlink" href="#deviceinstance" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">DeviceInstance</code><span class="sig-paren">(</span><em>information_set=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#DeviceInstance"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>An instance of a Device.</p>
|
||||
<p>The properties are from the page <a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_address">https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_address</a></p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.address">
|
||||
<code class="descname">address</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.address" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The device’s address.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.allocated_configuration">
|
||||
<code class="descname">allocated_configuration</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.allocated_configuration" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The allocated configuration of the device.
|
||||
(<a class="reference external" href="https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources#logical-configuration-types-for-resource-lists">https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources#logical-configuration-types-for-resource-lists</a>)</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference internal" href="#windows.winobject.device_manager.LogicalConfiguration" title="windows.winobject.device_manager.LogicalConfiguration"><code class="xref py py-class docutils literal notranslate"><span class="pre">LogicalConfiguration</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.boot_configuration">
|
||||
<code class="descname">boot_configuration</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.boot_configuration" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The boot configuration of the device.
|
||||
(<a class="reference external" href="https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources#logical-configuration-types-for-resource-lists">https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/hardware-resources#logical-configuration-types-for-resource-lists</a>)</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference internal" href="#windows.winobject.device_manager.LogicalConfiguration" title="windows.winobject.device_manager.LogicalConfiguration"><code class="xref py py-class docutils literal notranslate"><span class="pre">LogicalConfiguration</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.bus_number">
|
||||
<code class="descname">bus_number</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.bus_number" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The device’s bus number.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.bus_type">
|
||||
<code class="descname">bus_type</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.bus_type" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The function retrieves the GUID for the device’s bus type.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.capabilites">
|
||||
<code class="descname">capabilites</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.capabilites" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The device capabilites
|
||||
(<a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_capabilities">https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_capabilities</a>)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.description">
|
||||
<code class="descname">description</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.description" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The description of the device</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.device_object_name">
|
||||
<code class="descname">device_object_name</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.device_object_name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The function retrieves a string that contains the name that is associated with the device’s PDO.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.driver">
|
||||
<code class="descname">driver</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.driver" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The driver of the device
|
||||
<a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_driver">https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_driver</a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.enumerator_name">
|
||||
<code class="descname">enumerator_name</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.enumerator_name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The enumerator name of the devices
|
||||
(<a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_enumerator_name">https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_enumerator_name</a>)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.hardware_id">
|
||||
<code class="descname">hardware_id</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.hardware_id" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The list of hardware IDs for the device.
|
||||
(<a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_hardwareid">https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_hardwareid</a>)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.location_information">
|
||||
<code class="descname">location_information</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.location_information" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The hardware location of a device.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.location_paths">
|
||||
<code class="descname">location_paths</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.location_paths" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A list of strings that represents the location of the device in the device tree.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.lower_filters">
|
||||
<code class="descname">lower_filters</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.lower_filters" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A list of string that contains the names of a device’s lower filter drivers.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.manufacturer">
|
||||
<code class="descname">manufacturer</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.manufacturer" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The name of the device manufacturer.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.name">
|
||||
<code class="descname">name</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The name of the device</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.raw_security_descriptor">
|
||||
<code class="descname">raw_security_descriptor</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.raw_security_descriptor" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw (binary) security descriptor of the device</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.security_descriptor">
|
||||
<code class="descname">security_descriptor</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.security_descriptor" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The security descriptor of the device.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference internal" href="security.html#windows.security.SecurityDescriptor" title="windows.security.SecurityDescriptor"><code class="xref py py-class docutils literal notranslate"><span class="pre">SecurityDescriptor</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.service_name">
|
||||
<code class="descname">service_name</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.service_name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The name of the service for the device
|
||||
(<a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_service">https://docs.microsoft.com/en-us/windows/win32/api/setupapi/nf-setupapi-setupdigetdeviceregistrypropertya#spdrp_service</a>)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.type">
|
||||
<code class="descname">type</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.type" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The type of device
|
||||
(<a class="reference external" href="https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/specifying-device-types">https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/specifying-device-types</a>)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.ui_number">
|
||||
<code class="descname">ui_number</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.ui_number" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Retrieves a DWORD value set to the value of the UINumber member of the device’s</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DeviceInstance.upper_filters">
|
||||
<code class="descname">upper_filters</code><a class="headerlink" href="#windows.winobject.device_manager.DeviceInstance.upper_filters" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A list of string that contains the names of a device’s upper filter drivers.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="logicalconfiguration">
|
||||
<h2>2.14.5. LogicalConfiguration<a class="headerlink" href="#logicalconfiguration" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.LogicalConfiguration">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">LogicalConfiguration</code><a class="reference internal" href="_modules/windows/winobject/device_manager.html#LogicalConfiguration"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.LogicalConfiguration" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Logical Configuration of a Device instance</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.LogicalConfiguration.resources">
|
||||
<code class="descname">resources</code><a class="headerlink" href="#windows.winobject.device_manager.LogicalConfiguration.resources" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The list of resources in the current logical configuration</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body">[<a class="reference internal" href="#windows.winobject.device_manager.ResourceDescriptor" title="windows.winobject.device_manager.ResourceDescriptor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ResourceDescriptor</span></code></a>] – A list of [<a class="reference internal" href="#windows.winobject.device_manager.ResourceDescriptor" title="windows.winobject.device_manager.ResourceDescriptor"><code class="xref py py-class docutils literal notranslate"><span class="pre">ResourceDescriptor</span></code></a>]</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.LogicalConfiguration.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.LogicalConfiguration.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="resourcedescriptor">
|
||||
<h2>2.14.6. ResourceDescriptor<a class="headerlink" href="#resourcedescriptor" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.ResourceDescriptor">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">ResourceDescriptor</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#ResourceDescriptor"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.ResourceDescriptor" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Describe a resource allocated or reserved by a device instance.
|
||||
This class is a base class, all resources returned by <a class="reference internal" href="#windows.winobject.device_manager.LogicalConfiguration" title="windows.winobject.device_manager.LogicalConfiguration"><code class="xref py py-class docutils literal notranslate"><span class="pre">LogicalConfiguration</span></code></a> should be one of the following:</p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.ResourceNoType" title="windows.winobject.device_manager.ResourceNoType"><code class="xref py py-class docutils literal notranslate"><span class="pre">ResourceNoType</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.MemoryResource" title="windows.winobject.device_manager.MemoryResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">MemoryResource</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.IoResource" title="windows.winobject.device_manager.IoResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">IoResource</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.DmaResource" title="windows.winobject.device_manager.DmaResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">DmaResource</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.IrqResource" title="windows.winobject.device_manager.IrqResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">IrqResource</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.BusNumberResource" title="windows.winobject.device_manager.BusNumberResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">BusNumberResource</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.MemLargeResource" title="windows.winobject.device_manager.MemLargeResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">MemLargeResource</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.ClassSpecificResource" title="windows.winobject.device_manager.ClassSpecificResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">ClassSpecificResource</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.DevicePrivateResource" title="windows.winobject.device_manager.DevicePrivateResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">DevicePrivateResource</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.MfCardConfigResource" title="windows.winobject.device_manager.MfCardConfigResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">MfCardConfigResource</span></code></a></li>
|
||||
<li><a class="reference internal" href="#windows.winobject.device_manager.PcCardConfigResource" title="windows.winobject.device_manager.PcCardConfigResource"><code class="xref py py-class docutils literal notranslate"><span class="pre">PcCardConfigResource</span></code></a></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.ResourceDescriptor.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.ResourceDescriptor.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.ResourceDescriptor.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.ResourceDescriptor.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<div class="section" id="concrete-resourcedescriptor">
|
||||
<h3>2.14.6.1. Concrete ResourceDescriptor<a class="headerlink" href="#concrete-resourcedescriptor" title="Permalink to this headline">¶</a></h3>
|
||||
<div class="section" id="resourcenotype">
|
||||
<h4>2.14.6.1.1. ResourceNoType<a class="headerlink" href="#resourcenotype" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.ResourceNoType">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">ResourceNoType</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#ResourceNoType"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.ResourceNoType" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.ResourceNoType.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.ResourceNoType.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.ResourceNoType.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.ResourceNoType.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="memoryresource">
|
||||
<h4>2.14.6.1.2. MemoryResource<a class="headerlink" href="#memoryresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.MemoryResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">MemoryResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#MemoryResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.MemoryResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A resource of type MEM_RESOURCE</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.MemoryResource.DATA_TYPE">
|
||||
<code class="descname">DATA_TYPE</code><a class="headerlink" href="#windows.winobject.device_manager.MemoryResource.DATA_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.Mem_Resource_s" title="windows.generated_def.winstructs.Mem_Resource_s"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs.Mem_Resource_s</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.MemoryResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.MemoryResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.MemoryResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.MemoryResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="ioresource">
|
||||
<h4>2.14.6.1.3. IoResource<a class="headerlink" href="#ioresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.IoResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">IoResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#IoResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.IoResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A resource of type IO_RESOURCE</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.IoResource.DATA_TYPE">
|
||||
<code class="descname">DATA_TYPE</code><a class="headerlink" href="#windows.winobject.device_manager.IoResource.DATA_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.IO_Resource_s" title="windows.generated_def.winstructs.IO_Resource_s"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs.IO_Resource_s</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.IoResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.IoResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.IoResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.IoResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="dmaresource">
|
||||
<h4>2.14.6.1.4. DmaResource<a class="headerlink" href="#dmaresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.DmaResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">DmaResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#DmaResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.DmaResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A resource of type DMA_RESOURCE</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DmaResource.DATA_TYPE">
|
||||
<code class="descname">DATA_TYPE</code><a class="headerlink" href="#windows.winobject.device_manager.DmaResource.DATA_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.DMA_Resource_s" title="windows.generated_def.winstructs.DMA_Resource_s"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs.DMA_Resource_s</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DmaResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.DmaResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DmaResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.DmaResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="irqresource">
|
||||
<h4>2.14.6.1.5. IrqResource<a class="headerlink" href="#irqresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.IrqResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">IrqResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#IrqResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.IrqResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A resource of type IRQ_RESOURCE</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.IrqResource.DATA_TYPE">
|
||||
<code class="descname">DATA_TYPE</code><a class="headerlink" href="#windows.winobject.device_manager.IrqResource.DATA_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.IRQ_Resource_32_s" title="windows.generated_def.winstructs.IRQ_Resource_32_s"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs.IRQ_Resource_32_s</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.IrqResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.IrqResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.IrqResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.IrqResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="busnumberresource">
|
||||
<h4>2.14.6.1.6. BusNumberResource<a class="headerlink" href="#busnumberresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.BusNumberResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">BusNumberResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#BusNumberResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.BusNumberResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A resource of type BUSNUMBER_RESOURCE</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.BusNumberResource.DATA_TYPE">
|
||||
<code class="descname">DATA_TYPE</code><a class="headerlink" href="#windows.winobject.device_manager.BusNumberResource.DATA_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.BusNumber_Resource_s" title="windows.generated_def.winstructs.BusNumber_Resource_s"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs.BusNumber_Resource_s</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.BusNumberResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.BusNumberResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.BusNumberResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.BusNumberResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="memlargeresource">
|
||||
<h4>2.14.6.1.7. MemLargeResource<a class="headerlink" href="#memlargeresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.MemLargeResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">MemLargeResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#MemLargeResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.MemLargeResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A resource of type MEM_LARGE_RESOURCE</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.MemLargeResource.DATA_TYPE">
|
||||
<code class="descname">DATA_TYPE</code><a class="headerlink" href="#windows.winobject.device_manager.MemLargeResource.DATA_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.Mem_Large_Resource_s" title="windows.generated_def.winstructs.Mem_Large_Resource_s"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs.Mem_Large_Resource_s</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.MemLargeResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.MemLargeResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.MemLargeResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.MemLargeResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="classspecificresource">
|
||||
<h4>2.14.6.1.8. ClassSpecificResource<a class="headerlink" href="#classspecificresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.ClassSpecificResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">ClassSpecificResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#ClassSpecificResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.ClassSpecificResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A resource of type CS_RESOURCE</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.ClassSpecificResource.DATA_TYPE">
|
||||
<code class="descname">DATA_TYPE</code><a class="headerlink" href="#windows.winobject.device_manager.ClassSpecificResource.DATA_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.CS_Resource_s" title="windows.generated_def.winstructs.CS_Resource_s"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs.CS_Resource_s</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.ClassSpecificResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.ClassSpecificResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.ClassSpecificResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.ClassSpecificResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="deviceprivateresource">
|
||||
<h4>2.14.6.1.9. DevicePrivateResource<a class="headerlink" href="#deviceprivateresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.DevicePrivateResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">DevicePrivateResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#DevicePrivateResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.DevicePrivateResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A device private resource
|
||||
(<a class="reference external" href="https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devprivate-resource">https://docs.microsoft.com/en-us/windows-hardware/drivers/install/devprivate-resource</a>)</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DevicePrivateResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.DevicePrivateResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.DevicePrivateResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.DevicePrivateResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="mfcardconfigresource">
|
||||
<h4>2.14.6.1.10. MfCardConfigResource<a class="headerlink" href="#mfcardconfigresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.MfCardConfigResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">MfCardConfigResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#MfCardConfigResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.MfCardConfigResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A resource of type MFCARD_RESOURCE</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.MfCardConfigResource.DATA_TYPE">
|
||||
<code class="descname">DATA_TYPE</code><a class="headerlink" href="#windows.winobject.device_manager.MfCardConfigResource.DATA_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.MfCard_Resource_s" title="windows.generated_def.winstructs.MfCard_Resource_s"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs.MfCard_Resource_s</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.MfCardConfigResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.MfCardConfigResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.MfCardConfigResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.MfCardConfigResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="pccardconfigresource">
|
||||
<h4>2.14.6.1.11. PcCardConfigResource<a class="headerlink" href="#pccardconfigresource" title="Permalink to this headline">¶</a></h4>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.device_manager.PcCardConfigResource">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.device_manager.</code><code class="descname">PcCardConfigResource</code><span class="sig-paren">(</span><em>handle</em>, <em>type</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/device_manager.html#PcCardConfigResource"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.device_manager.PcCardConfigResource" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A resource of type PCCARD_RESOURCE</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.PcCardConfigResource.DATA_TYPE">
|
||||
<code class="descname">DATA_TYPE</code><a class="headerlink" href="#windows.winobject.device_manager.PcCardConfigResource.DATA_TYPE" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>alias of <a class="reference internal" href="winstructs_generated.html#windows.generated_def.winstructs.PcCard_Resource_s" title="windows.generated_def.winstructs.PcCard_Resource_s"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.generated_def.winstructs.PcCard_Resource_s</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.PcCardConfigResource.rawdata">
|
||||
<code class="descname">rawdata</code><a class="headerlink" href="#windows.winobject.device_manager.PcCardConfigResource.rawdata" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The raw data describing the resource</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.device_manager.PcCardConfigResource.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.device_manager.PcCardConfigResource.value" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>current value</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">2.14. Device Manager</a><ul>
|
||||
<li><a class="reference internal" href="#devicemanager">2.14.1. DeviceManager</a></li>
|
||||
<li><a class="reference internal" href="#deviceclass">2.14.2. DeviceClass</a></li>
|
||||
<li><a class="reference internal" href="#deviceinformationset">2.14.3. DeviceInformationSet</a></li>
|
||||
<li><a class="reference internal" href="#deviceinstance">2.14.4. DeviceInstance</a></li>
|
||||
<li><a class="reference internal" href="#logicalconfiguration">2.14.5. LogicalConfiguration</a></li>
|
||||
<li><a class="reference internal" href="#resourcedescriptor">2.14.6. ResourceDescriptor</a><ul>
|
||||
<li><a class="reference internal" href="#concrete-resourcedescriptor">2.14.6.1. Concrete ResourceDescriptor</a><ul>
|
||||
<li><a class="reference internal" href="#resourcenotype">2.14.6.1.1. ResourceNoType</a></li>
|
||||
<li><a class="reference internal" href="#memoryresource">2.14.6.1.2. MemoryResource</a></li>
|
||||
<li><a class="reference internal" href="#ioresource">2.14.6.1.3. IoResource</a></li>
|
||||
<li><a class="reference internal" href="#dmaresource">2.14.6.1.4. DmaResource</a></li>
|
||||
<li><a class="reference internal" href="#irqresource">2.14.6.1.5. IrqResource</a></li>
|
||||
<li><a class="reference internal" href="#busnumberresource">2.14.6.1.6. BusNumberResource</a></li>
|
||||
<li><a class="reference internal" href="#memlargeresource">2.14.6.1.7. MemLargeResource</a></li>
|
||||
<li><a class="reference internal" href="#classspecificresource">2.14.6.1.8. ClassSpecificResource</a></li>
|
||||
<li><a class="reference internal" href="#deviceprivateresource">2.14.6.1.9. DevicePrivateResource</a></li>
|
||||
<li><a class="reference internal" href="#mfcardconfigresource">2.14.6.1.10. MfCardConfigResource</a></li>
|
||||
<li><a class="reference internal" href="#pccardconfigresource">2.14.6.1.11. PcCardConfigResource</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="object_manager.html"
|
||||
title="previous chapter">2.13. Object Manager – Kernel objects</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="task_scheduler.html"
|
||||
title="next chapter">2.15. Task scheduler</a></p>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/device_manager.rst.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<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="right" >
|
||||
<a href="task_scheduler.html" title="2.15. Task scheduler"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="object_manager.html" title="2.13. Object Manager – Kernel objects"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" >2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+354
@@ -0,0 +1,354 @@
|
||||
|
||||
<!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>2.17. ETW – Event Tracing for Windows — PythonForWindows 0.6 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" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="3. windows.native_exec – Native Code Execution" href="native_exec.html" />
|
||||
<link rel="prev" title="2.16. Event Log" href="evtlog.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="native_exec.html" title="3. windows.native_exec – Native Code Execution"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="evtlog.html" title="2.16. Event Log"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U">2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
<div class="body" role="main">
|
||||
|
||||
<div class="section" id="module-windows.winobject.event_trace">
|
||||
<span id="etw-event-tracing-for-windows"></span><h1>2.17. ETW – Event Tracing for Windows<a class="headerlink" href="#module-windows.winobject.event_trace" title="Permalink to this headline">¶</a></h1>
|
||||
<p>The <a class="reference internal" href="#windows.winobject.event_trace.EtwManager" title="windows.winobject.event_trace.EtwManager"><code class="xref py py-class docutils literal notranslate"><span class="pre">EtwManager</span></code></a> instance is accessible via <a class="reference internal" href="windows.html#windows.winobject.system.System.etw" title="windows.winobject.system.System.etw"><code class="xref py py-attr docutils literal notranslate"><span class="pre">windows.system.etw</span></code></a></p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">This code is the result of my research on <code class="docutils literal notranslate"><span class="pre">ETW</span></code> that lead to this presentation <a class="reference external" href="https://www.rump.beer/2019/slides/etw_lazy_reverser.pdf">ETW for the lazy reverser (FR)</a></p>
|
||||
</div>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
<p class="last">See sample <a class="reference internal" href="sample.html#sample-etw"><span class="std std-ref">ETW (Event Tracing for Windows)</span></a></p>
|
||||
</div>
|
||||
<div class="section" id="etwmanager">
|
||||
<h2>2.17.1. EtwManager<a class="headerlink" href="#etwmanager" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_trace.EtwManager">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_trace.</code><code class="descname">EtwManager</code><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwManager"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwManager" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>An object to query ETW session/providers and open new trace</p>
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_trace.EtwManager.open_trace">
|
||||
<code class="descname">open_trace</code><span class="sig-paren">(</span><em>name=None</em>, <em>logfile=None</em>, <em>guid=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwManager.open_trace"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwManager.open_trace" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Open a new ETW Trace</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"><a class="reference internal" href="#windows.winobject.event_trace.EtwTrace" title="windows.winobject.event_trace.EtwTrace"><code class="xref py py-class docutils literal notranslate"><span class="pre">EtwTrace</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EtwManager.providers">
|
||||
<code class="descname">providers</code><a class="headerlink" href="#windows.winobject.event_trace.EtwManager.providers" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The list of currently existing ETW providers.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body">[<code class="xref py py-class docutils literal notranslate"><span class="pre">TraceProvider</span></code>] – A list of ETW providers</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EtwManager.sessions">
|
||||
<code class="descname">sessions</code><a class="headerlink" href="#windows.winobject.event_trace.EtwManager.sessions" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The list of currently active ETW session.</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body">[<a class="reference internal" href="#windows.winobject.event_trace.EventTraceProperties" title="windows.winobject.event_trace.EventTraceProperties"><code class="xref py py-class docutils literal notranslate"><span class="pre">EventTraceProperties</span></code></a>] – A list of <a class="reference internal" href="#windows.winobject.event_trace.EventTraceProperties" title="windows.winobject.event_trace.EventTraceProperties"><code class="xref py py-class docutils literal notranslate"><span class="pre">EventTraceProperties</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="tracing-events">
|
||||
<h2>2.17.2. Tracing Events<a class="headerlink" href="#tracing-events" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="etwtrace">
|
||||
<h3>2.17.2.1. EtwTrace<a class="headerlink" href="#etwtrace" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_trace.</code><code class="descname">EtwTrace</code><span class="sig-paren">(</span><em>name</em>, <em>logfile=None</em>, <em>guid=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwTrace"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Represent an ETW Trace for tracing/processing events</p>
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.enable">
|
||||
<code class="descname">enable</code><span class="sig-paren">(</span><em>guid</em>, <em>flags=255</em>, <em>level=255</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwTrace.enable"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.enable" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Enable the specified event trace provider.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.enable_ex">
|
||||
<code class="descname">enable_ex</code><span class="sig-paren">(</span><em>guid</em>, <em>flags=255</em>, <em>level=255</em>, <em>any_keyword=4294967295L</em>, <em>all_keyword=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwTrace.enable_ex"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.enable_ex" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Enable the specified event trace provider.</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.exists">
|
||||
<code class="descname">exists</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwTrace.exists"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.exists" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Return <code class="docutils literal notranslate"><span class="pre">True</span></code> if the trace already exist (based on its name)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.flush">
|
||||
<code class="descname">flush</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwTrace.flush"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.flush" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Flush the trace</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.guid">
|
||||
<code class="descname">guid</code><em class="property"> = None</em><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.guid" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The guid of the trace</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.logfile">
|
||||
<code class="descname">logfile</code><em class="property"> = None</em><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.logfile" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The logging file of the trace (<code class="docutils literal notranslate"><span class="pre">None</span></code> means real time trace)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.name">
|
||||
<code class="descname">name</code><em class="property"> = None</em><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The name of the trace</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.process">
|
||||
<code class="descname">process</code><span class="sig-paren">(</span><em>callback</em>, <em>begin=None</em>, <em>end=None</em>, <em>context=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwTrace.process"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.process" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Process the event retrieved by the trace.
|
||||
This function will call <code class="docutils literal notranslate"><span class="pre">callback</span></code> with any <a class="reference internal" href="#windows.winobject.event_trace.EventRecord" title="windows.winobject.event_trace.EventRecord"><code class="xref py py-class docutils literal notranslate"><span class="pre">EventRecord</span></code></a> in the trace.
|
||||
<code class="docutils literal notranslate"><span class="pre">begin/end</span></code> allow to filter and only process events in a given timeframe.</p>
|
||||
<div class="admonition warning">
|
||||
<p class="first admonition-title">Warning</p>
|
||||
<p>If the trace if <code class="docutils literal notranslate"><span class="pre">REALTIME</span></code> (no logfile) this function will hang/process new event until the trace is stopped.</p>
|
||||
<p class="last">Using <code class="docutils literal notranslate"><span class="pre">logman</span> <span class="pre">-ets</span> <span class="pre">stop</span> <span class="pre">TRACE_NAME</span></code> for exemple.</p>
|
||||
</div>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.start">
|
||||
<code class="descname">start</code><span class="sig-paren">(</span><em>flags=0</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwTrace.start"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.start" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Start the tracing</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_trace.EtwTrace.stop">
|
||||
<code class="descname">stop</code><span class="sig-paren">(</span><em>soft=False</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EtwTrace.stop"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EtwTrace.stop" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>stop the tracing.</p>
|
||||
<p><code class="docutils literal notranslate"><span class="pre">soft</span></code> will allow to stop a non-existing trace that do not exists/run.
|
||||
This allow for simpler script that stop/start some EtwTrace.</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="eventtraceproperties">
|
||||
<h3>2.17.2.2. EventTraceProperties<a class="headerlink" href="#eventtraceproperties" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_trace.EventTraceProperties">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_trace.</code><code class="descname">EventTraceProperties</code><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EventTraceProperties"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EventTraceProperties" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Represent an Event Trace session that may exist or now. (<a class="reference external" href="https://docs.microsoft.com/en-us/windows/win32/api/evntrace/ns-evntrace-event_trace_properties">https://docs.microsoft.com/en-us/windows/win32/api/evntrace/ns-evntrace-event_trace_properties</a>)</p>
|
||||
<p>This class is widly used by <a class="reference internal" href="#windows.winobject.event_trace.EtwTrace" title="windows.winobject.event_trace.EtwTrace"><code class="xref py py-class docutils literal notranslate"><span class="pre">EtwTrace</span></code></a></p>
|
||||
<dl class="classmethod">
|
||||
<dt id="windows.winobject.event_trace.EventTraceProperties.create">
|
||||
<em class="property">classmethod </em><code class="descname">create</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EventTraceProperties.create"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EventTraceProperties.create" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Initialize a new <a class="reference internal" href="#windows.winobject.event_trace.EventTraceProperties" title="windows.winobject.event_trace.EventTraceProperties"><code class="xref py py-class docutils literal notranslate"><span class="pre">EventTraceProperties</span></code></a></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EventTraceProperties.guid">
|
||||
<code class="descname">guid</code><a class="headerlink" href="#windows.winobject.event_trace.EventTraceProperties.guid" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The GUID of the Event Trace session (see <code class="docutils literal notranslate"><span class="pre">Wnode.Guid</span></code>)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EventTraceProperties.id">
|
||||
<code class="descname">id</code><a class="headerlink" href="#windows.winobject.event_trace.EventTraceProperties.id" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The LoggerId if the session (see <code class="docutils literal notranslate"><span class="pre">Wnode.HistoricalContext</span></code>)</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EventTraceProperties.logfile">
|
||||
<code class="descname">logfile</code><a class="headerlink" href="#windows.winobject.event_trace.EventTraceProperties.logfile" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The logfile associated with the session</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EventTraceProperties.name">
|
||||
<code class="descname">name</code><a class="headerlink" href="#windows.winobject.event_trace.EventTraceProperties.name" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The name of the session</p>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
<div class="section" id="eventrecord">
|
||||
<h3>2.17.2.3. EventRecord<a class="headerlink" href="#eventrecord" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_trace.EventRecord">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_trace.</code><code class="descname">EventRecord</code><a class="reference internal" href="_modules/windows/winobject/event_trace.html#EventRecord"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_trace.EventRecord" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EventRecord.guid">
|
||||
<code class="descname">guid</code><a class="headerlink" href="#windows.winobject.event_trace.EventRecord.guid" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Guid of the Event</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EventRecord.id">
|
||||
<code class="descname">id</code><a class="headerlink" href="#windows.winobject.event_trace.EventRecord.id" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>ID of the Event</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EventRecord.pid">
|
||||
<code class="descname">pid</code><a class="headerlink" href="#windows.winobject.event_trace.EventRecord.pid" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Process ID that provided the event</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EventRecord.tid">
|
||||
<code class="descname">tid</code><a class="headerlink" href="#windows.winobject.event_trace.EventRecord.tid" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Thread ID that provided the event</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_trace.EventRecord.user_data">
|
||||
<code class="descname">user_data</code><a class="headerlink" href="#windows.winobject.event_trace.EventRecord.user_data" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Event specific data</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
<tr class="field-odd field"><th class="field-name">Type:</th><td class="field-body"><a class="reference external" href="https://docs.python.org/2.7/library/functions.html#str" title="(in Python v2.7)"><code class="xref py py-class docutils literal notranslate"><span class="pre">str</span></code></a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">2.17. ETW – Event Tracing for Windows</a><ul>
|
||||
<li><a class="reference internal" href="#etwmanager">2.17.1. EtwManager</a></li>
|
||||
<li><a class="reference internal" href="#tracing-events">2.17.2. Tracing Events</a><ul>
|
||||
<li><a class="reference internal" href="#etwtrace">2.17.2.1. EtwTrace</a></li>
|
||||
<li><a class="reference internal" href="#eventtraceproperties">2.17.2.2. EventTraceProperties</a></li>
|
||||
<li><a class="reference internal" href="#eventrecord">2.17.2.3. EventRecord</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="evtlog.html"
|
||||
title="previous chapter">2.16. Event Log</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="native_exec.html"
|
||||
title="next chapter">3. <code class="docutils literal notranslate"><span class="pre">windows.native_exec</span></code> – Native Code Execution</a></p>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
<li><a href="_sources/etw.rst.txt"
|
||||
rel="nofollow">Show Source</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<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="right" >
|
||||
<a href="native_exec.html" title="3. windows.native_exec – Native Code Execution"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="evtlog.html" title="2.16. Event Log"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" >2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer" role="contentinfo">
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+102
-45
@@ -6,18 +6,21 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>2.15. Event Log — PythonForWindows 0.5 documentation</title>
|
||||
<title>2.16. Event Log — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="3. windows.native_exec – Native Code Execution" href="native_exec.html" />
|
||||
<link rel="prev" title="2.14. Task scheduler" href="task_scheduler.html" />
|
||||
<link rel="next" title="2.17. ETW – Event Tracing for Windows" href="etw.html" />
|
||||
<link rel="prev" title="2.15. Task scheduler" href="task_scheduler.html" />
|
||||
</head><body>
|
||||
<div class="related" role="navigation" aria-label="related navigation">
|
||||
<h3>Navigation</h3>
|
||||
@@ -29,12 +32,12 @@
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="native_exec.html" title="3. windows.native_exec – Native Code Execution"
|
||||
<a href="etw.html" title="2.17. ETW – Event Tracing for Windows"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="task_scheduler.html" title="2.14. Task scheduler"
|
||||
<a href="task_scheduler.html" title="2.15. Task scheduler"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U">2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -45,10 +48,11 @@
|
||||
<div class="body" role="main">
|
||||
|
||||
<div class="section" id="module-windows.winobject.event_log">
|
||||
<span id="event-log"></span><h1>2.15. Event Log<a class="headerlink" href="#module-windows.winobject.event_log" title="Permalink to this headline">¶</a></h1>
|
||||
<span id="event-log"></span><h1>2.16. Event Log<a class="headerlink" href="#module-windows.winobject.event_log" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Some part of the Event Log WINAPI are not straightforward.</p>
|
||||
<p>I have tried to offer some abstraction without completly hidding the some underlying subtilities (for now).</p>
|
||||
<p>The current API may need some works to provide simpler/highter level API in the future.</p>
|
||||
<p>The <a class="reference internal" href="#windows.winobject.event_log.EvtlogManager" title="windows.winobject.event_log.EvtlogManager"><code class="xref py py-class docutils literal notranslate"><span class="pre">EvtlogManager</span></code></a> instance is accessible via <a class="reference internal" href="windows.html#windows.winobject.system.System.event_log" title="windows.winobject.system.System.event_log"><code class="xref py py-attr docutils literal notranslate"><span class="pre">windows.system.event_log</span></code></a></p>
|
||||
<p>For now, the best thing to do is look at the sample:</p>
|
||||
<div class="admonition note">
|
||||
<p class="first admonition-title">Note</p>
|
||||
@@ -59,7 +63,7 @@
|
||||
<p class="last">This API have not been tested on real case yet and may be subject to changes.</p>
|
||||
</div>
|
||||
<div class="section" id="evtlogmanager">
|
||||
<h2>2.15.1. EvtlogManager<a class="headerlink" href="#evtlogmanager" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>2.16.1. EvtlogManager<a class="headerlink" href="#evtlogmanager" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.EvtlogManager">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">EvtlogManager</code><a class="reference internal" href="_modules/windows/winobject/event_log.html#EvtlogManager"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EvtlogManager" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -131,9 +135,9 @@
|
||||
|
||||
</div>
|
||||
<div class="section" id="channel">
|
||||
<h2>2.15.2. Channel<a class="headerlink" href="#channel" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>2.16.2. Channel<a class="headerlink" href="#channel" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="evtchannel">
|
||||
<h3>2.15.2.1. EvtChannel<a class="headerlink" href="#evtchannel" title="Permalink to this headline">¶</a></h3>
|
||||
<h3>2.16.2.1. EvtChannel<a class="headerlink" href="#evtchannel" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.EvtChannel">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">EvtChannel</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#EvtChannel"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EvtChannel" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -211,7 +215,7 @@
|
||||
|
||||
</div>
|
||||
<div class="section" id="channelconfig">
|
||||
<h3>2.15.2.2. ChannelConfig<a class="headerlink" href="#channelconfig" title="Permalink to this headline">¶</a></h3>
|
||||
<h3>2.16.2.2. ChannelConfig<a class="headerlink" href="#channelconfig" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.ChannelConfig">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">ChannelConfig</code><span class="sig-paren">(</span><em>handle</em>, <em>name=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#ChannelConfig"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.ChannelConfig" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -251,9 +255,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="publisher">
|
||||
<h2>2.15.3. Publisher<a class="headerlink" href="#publisher" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>2.16.3. Publisher<a class="headerlink" href="#publisher" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="evtpublisher">
|
||||
<h3>2.15.3.1. EvtPublisher<a class="headerlink" href="#evtpublisher" title="Permalink to this headline">¶</a></h3>
|
||||
<h3>2.16.3.1. EvtPublisher<a class="headerlink" href="#evtpublisher" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.EvtPublisher">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">EvtPublisher</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#EvtPublisher"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EvtPublisher" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -276,7 +280,7 @@
|
||||
|
||||
</div>
|
||||
<div class="section" id="publishermetadata">
|
||||
<h3>2.15.3.2. PublisherMetadata<a class="headerlink" href="#publishermetadata" title="Permalink to this headline">¶</a></h3>
|
||||
<h3>2.16.3.2. PublisherMetadata<a class="headerlink" href="#publishermetadata" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.PublisherMetadata">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">PublisherMetadata</code><span class="sig-paren">(</span><em>handle</em>, <em>name=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#PublisherMetadata"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.PublisherMetadata" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -520,7 +524,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="evtfile">
|
||||
<h2>2.15.4. EvtFile<a class="headerlink" href="#evtfile" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>2.16.4. EvtFile<a class="headerlink" href="#evtfile" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.EvtFile">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">EvtFile</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#EvtFile"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EvtFile" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -598,13 +602,19 @@
|
||||
|
||||
</div>
|
||||
<div class="section" id="event">
|
||||
<h2>2.15.5. Event<a class="headerlink" href="#event" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>2.16.5. Event<a class="headerlink" href="#event" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="section" id="evtevent">
|
||||
<h3>2.15.5.1. EvtEvent<a class="headerlink" href="#evtevent" title="Permalink to this headline">¶</a></h3>
|
||||
<h3>2.16.5.1. EvtEvent<a class="headerlink" href="#evtevent" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.EvtEvent">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">EvtEvent</code><span class="sig-paren">(</span><em>handle=0</em>, <em>channel=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#EvtEvent"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EvtEvent" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>An Event log</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_log.EvtEvent.computer">
|
||||
<code class="descname">computer</code><a class="headerlink" href="#windows.winobject.event_log.EvtEvent.computer" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The computer that generated the event</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_log.EvtEvent.data">
|
||||
<code class="descname">data</code><a class="headerlink" href="#windows.winobject.event_log.EvtEvent.data" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -622,7 +632,13 @@
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_log.EvtEvent.date">
|
||||
<code class="descname">date</code><a class="headerlink" href="#windows.winobject.event_log.EvtEvent.date" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Event.time_created as a datetime</p>
|
||||
<dd><p><code class="docutils literal notranslate"><span class="pre">Event.time_created</span></code> as a :class:<code class="docutils literal notranslate"><span class="pre">datetime</span></code></p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_log.EvtEvent.event_values">
|
||||
<code class="descname">event_values</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#EvtEvent.event_values"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EvtEvent.event_values" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The values of the event in a list</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
@@ -663,6 +679,12 @@
|
||||
<dd><p>The process ID of the Event</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_log.EvtEvent.provider">
|
||||
<code class="descname">provider</code><a class="headerlink" href="#windows.winobject.event_log.EvtEvent.provider" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The provider of the event</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_log.EvtEvent.tid">
|
||||
<code class="descname">tid</code><a class="headerlink" href="#windows.winobject.event_log.EvtEvent.tid" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -675,6 +697,12 @@
|
||||
<dd><p>The creation time of the Event</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_log.EvtEvent.user">
|
||||
<code class="descname">user</code><a class="headerlink" href="#windows.winobject.event_log.EvtEvent.user" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The User ID associated with the Event</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_log.EvtEvent.value">
|
||||
<code class="descname">value</code><span class="sig-paren">(</span><em>name</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#EvtEvent.value"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EvtEvent.value" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -693,7 +721,7 @@
|
||||
|
||||
</div>
|
||||
<div class="section" id="eventmetadata">
|
||||
<h3>2.15.5.2. EventMetadata<a class="headerlink" href="#eventmetadata" title="Permalink to this headline">¶</a></h3>
|
||||
<h3>2.16.5.2. EventMetadata<a class="headerlink" href="#eventmetadata" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.EventMetadata">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">EventMetadata</code><a class="reference internal" href="_modules/windows/winobject/event_log.html#EventMetadata"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EventMetadata" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -770,7 +798,7 @@ Retrieved by parsing <a class="reference internal" href="#windows.winobject.even
|
||||
|
||||
</div>
|
||||
<div class="section" id="evtquery">
|
||||
<h3>2.15.5.3. EvtQuery<a class="headerlink" href="#evtquery" title="Permalink to this headline">¶</a></h3>
|
||||
<h3>2.16.5.3. EvtQuery<a class="headerlink" href="#evtquery" title="Permalink to this headline">¶</a></h3>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.EvtQuery">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">EvtQuery</code><span class="sig-paren">(</span><em>handle=0</em>, <em>channel=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#EvtQuery"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EvtQuery" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -809,6 +837,35 @@ Retrieved by parsing <a class="reference internal" href="#windows.winobject.even
|
||||
<dd><p>Return the next <a class="reference internal" href="#windows.winobject.event_log.EvtEvent" title="windows.winobject.event_log.EvtEvent"><code class="xref py py-class docutils literal notranslate"><span class="pre">EvtEvent</span></code></a> matching the query</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.winobject.event_log.EvtQuery.seek">
|
||||
<code class="descname">seek</code><span class="sig-paren">(</span><em>position</em>, <em>seek_flags=None</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/winobject/event_log.html#EvtQuery.seek"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.EvtQuery.seek" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Seek to <code class="docutils literal notranslate"><span class="pre">position</span></code>.
|
||||
<code class="docutils literal notranslate"><span class="pre">seek_flags</span></code> can be one of:</p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><code class="docutils literal notranslate"><span class="pre">None</span></code></li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">EvtSeekRelativeToFirst</span></code></li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">EvtSeekRelativeToLast</span></code></li>
|
||||
<li><code class="docutils literal notranslate"><span class="pre">EvtSeekRelativeToBookmark</span></code></li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
<p>If <code class="docutils literal notranslate"><span class="pre">seek_flags</span></code> is None:</p>
|
||||
<blockquote>
|
||||
<div><ul class="simple">
|
||||
<li><code class="docutils literal notranslate"><span class="pre">position</span> <span class="pre">>=</span> <span class="pre">0</span></code> will use <code class="docutils literal notranslate"><span class="pre">EvtSeekRelativeToFirst</span></code></li>
|
||||
<li><dl class="first docutils">
|
||||
<dt><code class="docutils literal notranslate"><span class="pre">position</span> <span class="pre"><</span> <span class="pre">0</span></code> will use <code class="docutils literal notranslate"><span class="pre">EvtSeekRelativeToLast</span></code> and with <code class="docutils literal notranslate"><span class="pre">position+1</span></code></dt>
|
||||
<dd><ul class="first last">
|
||||
<li>This allow retrieve the <code class="docutils literal notranslate"><span class="pre">position</span></code> lasts events</li>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</ul>
|
||||
</div></blockquote>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="attribute">
|
||||
<dt id="windows.winobject.event_log.EvtQuery.value">
|
||||
<code class="descname">value</code><a class="headerlink" href="#windows.winobject.event_log.EvtQuery.value" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -820,7 +877,7 @@ Retrieved by parsing <a class="reference internal" href="#windows.winobject.even
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="todo">
|
||||
<h2>2.15.6. TODO<a class="headerlink" href="#todo" title="Permalink to this headline">¶</a></h2>
|
||||
<h2>2.16.6. TODO<a class="headerlink" href="#todo" title="Permalink to this headline">¶</a></h2>
|
||||
<dl class="class">
|
||||
<dt id="windows.winobject.event_log.PropertyArray">
|
||||
<em class="property">class </em><code class="descclassname">windows.winobject.event_log.</code><code class="descname">PropertyArray</code><a class="reference internal" href="_modules/windows/winobject/event_log.html#PropertyArray"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.winobject.event_log.PropertyArray" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -842,38 +899,38 @@ Retrieved by parsing <a class="reference internal" href="#windows.winobject.even
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">2.15. Event Log</a><ul>
|
||||
<li><a class="reference internal" href="#evtlogmanager">2.15.1. EvtlogManager</a></li>
|
||||
<li><a class="reference internal" href="#channel">2.15.2. Channel</a><ul>
|
||||
<li><a class="reference internal" href="#evtchannel">2.15.2.1. EvtChannel</a></li>
|
||||
<li><a class="reference internal" href="#channelconfig">2.15.2.2. ChannelConfig</a></li>
|
||||
<li><a class="reference internal" href="#">2.16. Event Log</a><ul>
|
||||
<li><a class="reference internal" href="#evtlogmanager">2.16.1. EvtlogManager</a></li>
|
||||
<li><a class="reference internal" href="#channel">2.16.2. Channel</a><ul>
|
||||
<li><a class="reference internal" href="#evtchannel">2.16.2.1. EvtChannel</a></li>
|
||||
<li><a class="reference internal" href="#channelconfig">2.16.2.2. ChannelConfig</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#publisher">2.15.3. Publisher</a><ul>
|
||||
<li><a class="reference internal" href="#evtpublisher">2.15.3.1. EvtPublisher</a></li>
|
||||
<li><a class="reference internal" href="#publishermetadata">2.15.3.2. PublisherMetadata</a></li>
|
||||
<li><a class="reference internal" href="#publisher">2.16.3. Publisher</a><ul>
|
||||
<li><a class="reference internal" href="#evtpublisher">2.16.3.1. EvtPublisher</a></li>
|
||||
<li><a class="reference internal" href="#publishermetadata">2.16.3.2. PublisherMetadata</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#evtfile">2.15.4. EvtFile</a></li>
|
||||
<li><a class="reference internal" href="#event">2.15.5. Event</a><ul>
|
||||
<li><a class="reference internal" href="#evtevent">2.15.5.1. EvtEvent</a></li>
|
||||
<li><a class="reference internal" href="#eventmetadata">2.15.5.2. EventMetadata</a></li>
|
||||
<li><a class="reference internal" href="#evtquery">2.15.5.3. EvtQuery</a></li>
|
||||
<li><a class="reference internal" href="#evtfile">2.16.4. EvtFile</a></li>
|
||||
<li><a class="reference internal" href="#event">2.16.5. Event</a><ul>
|
||||
<li><a class="reference internal" href="#evtevent">2.16.5.1. EvtEvent</a></li>
|
||||
<li><a class="reference internal" href="#eventmetadata">2.16.5.2. EventMetadata</a></li>
|
||||
<li><a class="reference internal" href="#evtquery">2.16.5.3. EvtQuery</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#todo">2.15.6. TODO</a></li>
|
||||
<li><a class="reference internal" href="#todo">2.16.6. TODO</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="task_scheduler.html"
|
||||
title="previous chapter">2.14. Task scheduler</a></p>
|
||||
title="previous chapter">2.15. Task scheduler</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="native_exec.html"
|
||||
title="next chapter">3. <code class="docutils literal notranslate"><span class="pre">windows.native_exec</span></code> – Native Code Execution</a></p>
|
||||
<p class="topless"><a href="etw.html"
|
||||
title="next chapter">2.17. ETW – Event Tracing for Windows</a></p>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
@@ -907,18 +964,18 @@ Retrieved by parsing <a class="reference internal" href="#windows.winobject.even
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="native_exec.html" title="3. windows.native_exec – Native Code Execution"
|
||||
<a href="etw.html" title="2.17. ETW – Event Tracing for Windows"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="task_scheduler.html" title="2.14. Task scheduler"
|
||||
<a href="task_scheduler.html" title="2.15. Task scheduler"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" >2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+10
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>2.5. Exception and Context related structures — PythonForWindows 0.5 documentation</title>
|
||||
<title>2.5. Exception and Context related structures — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="2.6. Registry" href="registry.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="token.html" title="2.4. Token"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U">2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -576,7 +579,7 @@ Most of the structures are the Windows structure with a prefix <code class="docu
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">2.5. Exception and Context related structures</a><ul>
|
||||
<li><a class="reference internal" href="#exception-records">2.5.1. Exception Records</a></li>
|
||||
@@ -632,13 +635,13 @@ Most of the structures are the Windows structure with a prefix <code class="docu
|
||||
<li class="right" >
|
||||
<a href="token.html" title="2.4. Token"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" >2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+11
-8
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>14. windows.generated_def – generated Windows defines and structures — PythonForWindows 0.5 documentation</title>
|
||||
<title>14. windows.generated_def – generated Windows defines and structures — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="14.1. WinDef" href="windef_generated.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="rpc.html" title="13. windows.rpc – ALPC-based Windows RPC"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -80,7 +83,7 @@
|
||||
<div class="section" id="example">
|
||||
<h2>14.6. Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">windows.generated_def</span>
|
||||
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="kn">as</span> <span class="nn">gdef</span>
|
||||
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="gp">>>> </span><span class="n">gdef</span>
|
||||
<span class="go"><module 'windows.generated_def' from 'c:\users\hakril\documents\work\pythonforwindows\windows\generated_def\__init__.pyc'></span>
|
||||
|
||||
@@ -123,7 +126,7 @@
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">14. <code class="docutils literal notranslate"><span class="pre">windows.generated_def</span></code> – generated Windows defines and structures</a><ul>
|
||||
<li><a class="reference internal" href="#example">14.6. Example</a></li>
|
||||
@@ -175,12 +178,12 @@
|
||||
<li class="right" >
|
||||
<a href="rpc.html" title="13. windows.rpc – ALPC-based Windows RPC"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+1976
-73
File diff suppressed because it is too large
Load Diff
Vendored
+9
-6
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>2.11. Handle – Processes handles — PythonForWindows 0.5 documentation</title>
|
||||
<title>2.11. Handle – Processes handles — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="2.12. System Module – Loaded kernel modules" href="system_module.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="wmi.html" title="2.10. WMI – Make request to WMI"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U">2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -170,13 +173,13 @@
|
||||
<li class="right" >
|
||||
<a href="wmi.html" title="2.10. WMI – Make request to WMI"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" >2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+17
-14
@@ -6,18 +6,21 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>15. IAT hooking — PythonForWindows 0.5 documentation</title>
|
||||
<title>15. IAT hooking — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="16. Early Work In Progress" href="wip.html" />
|
||||
<link rel="prev" title="14.5. Windef" href="winerror_generated.html" />
|
||||
<link rel="prev" title="14.5. WinError" href="winerror_generated.html" />
|
||||
</head><body>
|
||||
<div class="related" role="navigation" aria-label="related navigation">
|
||||
<h3>Navigation</h3>
|
||||
@@ -32,9 +35,9 @@
|
||||
<a href="wip.html" title="16. Early Work In Progress"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="winerror_generated.html" title="14.5. Windef"
|
||||
<a href="winerror_generated.html" title="14.5. WinError"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -61,7 +64,7 @@
|
||||
<p>You just need to use the function <a class="reference internal" href="process.html#windows.pe_parse.IATEntry.set_hook" title="windows.pe_parse.IATEntry.set_hook"><code class="xref py py-func docutils literal notranslate"><span class="pre">windows.pe_parse.IATEntry.set_hook()</span></code></a></p>
|
||||
<p>Putting a hook:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">windows</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.hooks</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<span class="kn">from</span> <span class="nn">windows.hooks</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
|
||||
<span class="nd">@CreateFileACallback</span>
|
||||
<span class="k">def</span> <span class="nf">createfile_callback</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">real_function</span><span class="p">):</span>
|
||||
@@ -108,7 +111,7 @@
|
||||
<blockquote>
|
||||
<div><ul>
|
||||
<li><p class="first">Giving the type manualy using the decorator <a class="reference internal" href="#windows.hooks.Callback" title="windows.hooks.Callback"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.hooks.Callback</span></code></a>:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">windows.hooks</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">windows.hooks</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="c1"># First type is return type, others are parameters types</span>
|
||||
<span class="nd">@Callback</span><span class="p">(</span><span class="n">ctypes</span><span class="o">.</span><span class="n">c_void_p</span><span class="p">,</span> <span class="n">ctypes</span><span class="o">.</span><span class="n">c_ulong</span><span class="p">)</span>
|
||||
<span class="k">def</span> <span class="nf">exit_callback</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">real_function</span><span class="p">):</span>
|
||||
@@ -121,7 +124,7 @@
|
||||
</div>
|
||||
</li>
|
||||
<li><p class="first">Using the <cite>Callback</cite> decorator generated from known functions:</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">windows.hooks</span> <span class="k">import</span> <span class="o">*</span>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">windows.hooks</span> <span class="kn">import</span> <span class="o">*</span>
|
||||
<span class="c1"># Decorator name is always API_NAME + "CallBack"</span>
|
||||
<span class="nd">@CreateFileACallback</span>
|
||||
<span class="k">def</span> <span class="nf">createfile_callback</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">real_function</span><span class="p">):</span>
|
||||
@@ -175,7 +178,7 @@
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">15. IAT hooking</a><ul>
|
||||
<li><a class="reference internal" href="#putting-an-iat-hook">15.1. Putting an IAT hook</a></li>
|
||||
@@ -191,7 +194,7 @@
|
||||
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="winerror_generated.html"
|
||||
title="previous chapter">14.5. Windef</a></p>
|
||||
title="previous chapter">14.5. WinError</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="wip.html"
|
||||
title="next chapter">16. Early Work In Progress</a></p>
|
||||
@@ -231,14 +234,14 @@
|
||||
<a href="wip.html" title="16. Early Work In Progress"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="winerror_generated.html" title="14.5. Windef"
|
||||
<a href="winerror_generated.html" title="14.5. WinError"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+44
-28
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Welcome to PythonForWindows’s documentation! — PythonForWindows 0.5 documentation</title>
|
||||
<title>Welcome to PythonForWindows’s documentation! — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="1. The windows module" href="windows.html" />
|
||||
@@ -30,7 +33,7 @@
|
||||
<li class="right" >
|
||||
<a href="windows.html" title="1. The windows module"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="#">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="#">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -60,13 +63,17 @@ I am always glad to have feedbacks from people using this project.</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">python</span> <span class="n">setup</span><span class="o">.</span><span class="n">py</span> <span class="n">install</span>
|
||||
</pre></div>
|
||||
</div>
|
||||
<p>In its current state the project only support Python2 and
|
||||
<code class="docutils literal notranslate"><span class="pre">setup.py</span></code> will raise an <code class="xref py py-class docutils literal notranslate"><span class="pre">NotImplementedError</span></code> if launched from python3.</p>
|
||||
<div class="admonition warning">
|
||||
<p class="first admonition-title">Warning</p>
|
||||
<p class="last">PythonForWindows is not available on Pypi for now and thus cannot be directly installed using <code class="docutils literal notranslate"><span class="pre">pip</span></code>.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="python3">
|
||||
<h4>Python3<a class="headerlink" href="#python3" title="Permalink to this headline">¶</a></h4>
|
||||
<p>python3 support is still in beta.
|
||||
All the tests pass on master, but I did not test it heavily on real case.
|
||||
Do not hesitate report bugs and issues.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="documentation">
|
||||
@@ -91,8 +98,10 @@ I am always glad to have feedbacks from people using this project.</p>
|
||||
<li class="toctree-l2"><a class="reference internal" href="handle.html">2.11. Handle – Processes handles</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="system_module.html">2.12. System Module – Loaded kernel modules</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="object_manager.html">2.13. Object Manager – Kernel objects</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="task_scheduler.html">2.14. Task scheduler</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="evtlog.html">2.15. Event Log</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="device_manager.html">2.14. Device Manager</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="task_scheduler.html">2.15. Task scheduler</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="evtlog.html">2.16. Event Log</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="etw.html">2.17. ETW – Event Tracing for Windows</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="native_exec.html">3. <code class="docutils literal notranslate"><span class="pre">windows.native_exec</span></code> – Native Code Execution</a><ul>
|
||||
@@ -132,8 +141,10 @@ I am always glad to have feedbacks from people using this project.</p>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="debug.html">9. <code class="docutils literal notranslate"><span class="pre">windows.debug</span></code> – Debugging</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="debug.html#debugger">9.1. <code class="docutils literal notranslate"><span class="pre">Debugger</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="debug.html#localdebugger">9.2. <code class="docutils literal notranslate"><span class="pre">LocalDebugger</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="debug.html#breakpoint">9.3. <code class="docutils literal notranslate"><span class="pre">Breakpoint</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="debug.html#symboldebugger">9.2. <code class="docutils literal notranslate"><span class="pre">SymbolDebugger</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="debug.html#localdebugger">9.3. <code class="docutils literal notranslate"><span class="pre">LocalDebugger</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="debug.html#breakpoint">9.4. <code class="docutils literal notranslate"><span class="pre">Breakpoint</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="debug.html#module-windows.debug.symbols">9.5. <code class="docutils literal notranslate"><span class="pre">windows.debug.symbols</span></code> – Using symbols</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="com.html">10. <code class="docutils literal notranslate"><span class="pre">windows.com</span></code> - Component Object Model</a><ul>
|
||||
@@ -185,21 +196,25 @@ I am always glad to have feedbacks from people using this project.</p>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#processes">18.1. Processes</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#token">18.2. Token</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-system">18.3. <code class="docutils literal notranslate"><span class="pre">windows.system</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#network-socket-exploration">18.4. <code class="docutils literal notranslate"><span class="pre">Network</span></code> - socket exploration</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#registry">18.5. <code class="docutils literal notranslate"><span class="pre">Registry</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#scheduled-tasks">18.6. Scheduled tasks</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#event-log">18.7. Event Log</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#object-manager">18.8. Object manager</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-wintrust">18.9. <code class="docutils literal notranslate"><span class="pre">windows.wintrust</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#vectoredexception">18.10. <code class="docutils literal notranslate"><span class="pre">VectoredException()</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#debugging">18.11. Debugging</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#wmi">18.12. WMI</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-com">18.13. <code class="docutils literal notranslate"><span class="pre">windows.com</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-crypto">18.14. <code class="docutils literal notranslate"><span class="pre">windows.crypto</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-alpc">18.15. <code class="docutils literal notranslate"><span class="pre">windows.alpc</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-rpc">18.16. <code class="docutils literal notranslate"><span class="pre">windows.rpc</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-pipe">18.17. <code class="docutils literal notranslate"><span class="pre">windows.pipe</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-security">18.18. <code class="docutils literal notranslate"><span class="pre">windows.security</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#services">18.4. Services</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#network-socket-exploration">18.5. <code class="docutils literal notranslate"><span class="pre">Network</span></code> - socket exploration</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#registry">18.6. <code class="docutils literal notranslate"><span class="pre">Registry</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#scheduled-tasks">18.7. Scheduled tasks</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#event-log">18.8. Event Log</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#object-manager">18.9. Object manager</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#device-manager">18.10. Device manager</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-wintrust">18.11. <code class="docutils literal notranslate"><span class="pre">windows.wintrust</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#vectoredexception">18.12. <code class="docutils literal notranslate"><span class="pre">VectoredException()</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#debugging">18.13. Debugging</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#symbols">18.14. Symbols</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#wmi">18.15. WMI</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-com">18.16. <code class="docutils literal notranslate"><span class="pre">windows.com</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-crypto">18.17. <code class="docutils literal notranslate"><span class="pre">windows.crypto</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-alpc">18.18. <code class="docutils literal notranslate"><span class="pre">windows.alpc</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-rpc">18.19. <code class="docutils literal notranslate"><span class="pre">windows.rpc</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-pipe">18.20. <code class="docutils literal notranslate"><span class="pre">windows.pipe</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#windows-security">18.21. <code class="docutils literal notranslate"><span class="pre">windows.security</span></code></a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="sample.html#etw-event-tracing-for-windows">18.22. ETW (Event Tracing for Windows)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -221,12 +236,13 @@ I am always glad to have feedbacks from people using this project.</p>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="#">Table Of Contents</a></h3>
|
||||
<h3><a href="#">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">Welcome to PythonForWindows’s documentation!</a><ul>
|
||||
<li><a class="reference internal" href="#description">Description</a><ul>
|
||||
<li><a class="reference internal" href="#installation">Installation</a><ul>
|
||||
<li><a class="reference internal" href="#installing-using-setup-py">Installing using setup.py</a></li>
|
||||
<li><a class="reference internal" href="#python3">Python3</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
@@ -275,12 +291,12 @@ I am always glad to have feedbacks from people using this project.</p>
|
||||
<li class="right" >
|
||||
<a href="windows.html" title="1. The windows module"
|
||||
>next</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="#">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="#">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+10
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>17. Internals — PythonForWindows 0.5 documentation</title>
|
||||
<title>17. Internals — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="18. Samples of code" href="sample.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="wip.html" title="16. Early Work In Progress"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -201,7 +204,7 @@ With these information we are able to know</p>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">17. Internals</a><ul>
|
||||
<li><a class="reference internal" href="#module-windows.remotectypes">17.1. remotectypes.py</a></li>
|
||||
@@ -254,12 +257,12 @@ With these information we are able to know</p>
|
||||
<li class="right" >
|
||||
<a href="wip.html" title="16. Early Work In Progress"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+15
-12
@@ -6,18 +6,21 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>3. windows.native_exec – Native Code Execution — PythonForWindows 0.5 documentation</title>
|
||||
<title>3. windows.native_exec – Native Code Execution — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="4. windows.winproxy – Windows API" href="winproxy.html" />
|
||||
<link rel="prev" title="2.15. Event Log" href="evtlog.html" />
|
||||
<link rel="prev" title="2.17. ETW – Event Tracing for Windows" href="etw.html" />
|
||||
</head><body>
|
||||
<div class="related" role="navigation" aria-label="related navigation">
|
||||
<h3>Navigation</h3>
|
||||
@@ -32,9 +35,9 @@
|
||||
<a href="winproxy.html" title="4. windows.winproxy – Windows API"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="evtlog.html" title="2.15. Event Log"
|
||||
<a href="etw.html" title="2.17. ETW – Event Tracing for Windows"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -493,7 +496,7 @@ the end of your <code class="xref py py-class docutils literal notranslate"><spa
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">3. <code class="docutils literal notranslate"><span class="pre">windows.native_exec</span></code> – Native Code Execution</a><ul>
|
||||
<li><a class="reference internal" href="#module-windows.native_exec.cpuid">3.1. <code class="docutils literal notranslate"><span class="pre">windows.native_exec.cpuid</span></code> – Interface to native CPUID</a></li>
|
||||
@@ -505,8 +508,8 @@ the end of your <code class="xref py py-class docutils literal notranslate"><spa
|
||||
</ul>
|
||||
|
||||
<h4>Previous topic</h4>
|
||||
<p class="topless"><a href="evtlog.html"
|
||||
title="previous chapter">2.15. Event Log</a></p>
|
||||
<p class="topless"><a href="etw.html"
|
||||
title="previous chapter">2.17. ETW – Event Tracing for Windows</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="winproxy.html"
|
||||
title="next chapter">4. <code class="docutils literal notranslate"><span class="pre">windows.winproxy</span></code> – Windows API</a></p>
|
||||
@@ -546,14 +549,14 @@ the end of your <code class="xref py py-class docutils literal notranslate"><spa
|
||||
<a href="winproxy.html" title="4. windows.winproxy – Windows API"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="evtlog.html" title="2.15. Event Log"
|
||||
<a href="etw.html" title="2.17. ETW – Event Tracing for Windows"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+10
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>2.7. Network — PythonForWindows 0.5 documentation</title>
|
||||
<title>2.7. Network — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="2.8. Service" href="service.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="registry.html" title="2.6. Registry"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U">2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -549,7 +552,7 @@ Equals <code class="docutils literal notranslate"><span class="pre">remote_port<
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">2.7. Network</a><ul>
|
||||
<li><a class="reference internal" href="#connections">2.7.1. Connections</a></li>
|
||||
@@ -602,13 +605,13 @@ Equals <code class="docutils literal notranslate"><span class="pre">remote_port<
|
||||
<li class="right" >
|
||||
<a href="registry.html" title="2.6. Registry"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" >2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
+9
-6
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>14.2. Ntstatus — PythonForWindows 0.5 documentation</title>
|
||||
<title>14.2. Ntstatus — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="14.3. Winstructs" href="winstructs_generated.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="windef_generated.html" title="14.1. WinDef"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="generated.html" accesskey="U">14. <code class="docutils literal notranslate"><span class="pre">windows.generated_def</span></code> – generated Windows defines and structures</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -9068,13 +9071,13 @@
|
||||
<li class="right" >
|
||||
<a href="windef_generated.html" title="14.1. WinDef"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="generated.html" >14. <code class="docutils literal notranslate"><span class="pre">windows.generated_def</span></code> – generated Windows defines and structures</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+15
-12
@@ -6,17 +6,20 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>2.13. Object Manager – Kernel objects — PythonForWindows 0.5 documentation</title>
|
||||
<title>2.13. Object Manager – Kernel objects — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="2.14. Task scheduler" href="task_scheduler.html" />
|
||||
<link rel="next" title="2.14. Device Manager" href="device_manager.html" />
|
||||
<link rel="prev" title="2.12. System Module – Loaded kernel modules" href="system_module.html" />
|
||||
</head><body>
|
||||
<div class="related" role="navigation" aria-label="related navigation">
|
||||
@@ -29,12 +32,12 @@
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="task_scheduler.html" title="2.14. Task scheduler"
|
||||
<a href="device_manager.html" title="2.14. Device Manager"
|
||||
accesskey="N">next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="system_module.html" title="2.12. System Module – Loaded kernel modules"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U">2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -250,7 +253,7 @@ code <a class="reference internal" href="ntstatus_generated.html#windows.generat
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">2.13. Object Manager – Kernel objects</a><ul>
|
||||
<li><a class="reference internal" href="#objectmanager">2.13.1. ObjectManager</a></li>
|
||||
@@ -263,8 +266,8 @@ code <a class="reference internal" href="ntstatus_generated.html#windows.generat
|
||||
<p class="topless"><a href="system_module.html"
|
||||
title="previous chapter">2.12. System Module – Loaded kernel modules</a></p>
|
||||
<h4>Next topic</h4>
|
||||
<p class="topless"><a href="task_scheduler.html"
|
||||
title="next chapter">2.14. Task scheduler</a></p>
|
||||
<p class="topless"><a href="device_manager.html"
|
||||
title="next chapter">2.14. Device Manager</a></p>
|
||||
<div role="note" aria-label="source link">
|
||||
<h3>This Page</h3>
|
||||
<ul class="this-page-menu">
|
||||
@@ -298,18 +301,18 @@ code <a class="reference internal" href="ntstatus_generated.html#windows.generat
|
||||
<a href="py-modindex.html" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="task_scheduler.html" title="2.14. Task scheduler"
|
||||
<a href="device_manager.html" title="2.14. Device Manager"
|
||||
>next</a> |</li>
|
||||
<li class="right" >
|
||||
<a href="system_module.html" title="2.12. System Module – Loaded kernel modules"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" >2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+10
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>6. windows.pipe – Inter-Process Communication — PythonForWindows 0.5 documentation</title>
|
||||
<title>6. windows.pipe – Inter-Process Communication — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="7. windows.utils – Windows Utilities" href="utils.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="security.html" title="5. windows.security – Security Descriptor & related"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -181,7 +184,7 @@
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">6. <code class="docutils literal notranslate"><span class="pre">windows.pipe</span></code> – Inter-Process Communication</a><ul>
|
||||
<li><a class="reference internal" href="#helper-functions">6.1. Helper functions</a></li>
|
||||
@@ -234,12 +237,12 @@
|
||||
<li class="right" >
|
||||
<a href="security.html" title="5. windows.security – Security Descriptor & related"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+10
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>2.1. Processes and Threads — PythonForWindows 0.5 documentation</title>
|
||||
<title>2.1. Processes and Threads — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="2.4. Token" href="token.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="winobject.html" title="2. The windows objects"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U">2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -1771,7 +1774,7 @@ You MUST keep a reference to the hook while the hook is enabled.</p>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">2.1. Processes and Threads</a><ul>
|
||||
<li><a class="reference internal" href="#currentprocess">2.1.1. CurrentProcess</a></li>
|
||||
@@ -1840,13 +1843,13 @@ You MUST keep a reference to the hook while the hook is enabled.</p>
|
||||
<li class="right" >
|
||||
<a href="winobject.html" title="2. The windows objects"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" >2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+24
-6
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Python Module Index — PythonForWindows 0.5 documentation</title>
|
||||
<title>Python Module Index — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
|
||||
@@ -29,7 +32,7 @@
|
||||
<li class="right" >
|
||||
<a href="#" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -80,6 +83,11 @@
|
||||
<td>   
|
||||
<a href="debug.html#module-windows.debug"><code class="xref">windows.debug</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="debug.html#module-windows.debug.symbols"><code class="xref">windows.debug.symbols</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
@@ -160,11 +168,21 @@
|
||||
<td>   
|
||||
<a href="utils.html#module-windows.utils"><code class="xref">windows.utils</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="device_manager.html#module-windows.winobject.device_manager"><code class="xref">windows.winobject.device_manager</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="evtlog.html#module-windows.winobject.event_log"><code class="xref">windows.winobject.event_log</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
<a href="etw.html#module-windows.winobject.event_trace"><code class="xref">windows.winobject.event_trace</code></a></td><td>
|
||||
<em></em></td></tr>
|
||||
<tr class="cg-1">
|
||||
<td></td>
|
||||
<td>   
|
||||
@@ -268,12 +286,12 @@
|
||||
<li class="right" >
|
||||
<a href="#" title="Python Module Index"
|
||||
>modules</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+10
-7
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>2.6. Registry — PythonForWindows 0.5 documentation</title>
|
||||
<title>2.6. Registry — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="2.7. Network" href="network.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="exception.html" title="2.5. Exception and Context related structures"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" accesskey="U">2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -254,7 +257,7 @@
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">2.6. Registry</a><ul>
|
||||
<li><a class="reference internal" href="#id1">2.6.1. Registry</a></li>
|
||||
@@ -308,13 +311,13 @@
|
||||
<li class="right" >
|
||||
<a href="exception.html" title="2.5. Exception and Context related structures"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-1"><a href="winobject.html" >2. The <code class="docutils literal notranslate"><span class="pre">windows</span></code> objects</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+19
-10
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>13. windows.rpc – ALPC-based Windows RPC — PythonForWindows 0.5 documentation</title>
|
||||
<title>13. windows.rpc – ALPC-based Windows RPC — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="14. windows.generated_def – generated Windows defines and structures" href="generated.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="alpc.html" title="12. windows.alpc – Advanced Local Procedure Call"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -71,6 +74,12 @@
|
||||
<dt id="windows.rpc.RPCClient">
|
||||
<em class="property">class </em><code class="descclassname">windows.rpc.</code><code class="descname">RPCClient</code><span class="sig-paren">(</span><em>port</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/rpc/client.html#RPCClient"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.rpc.RPCClient" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>A client for RPC-over-ALPC able to bind to interface and perform calls using NDR32 marshalling</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.rpc.RPCClient.alpc_client">
|
||||
<code class="descname">alpc_client</code><em class="property"> = None</em><a class="headerlink" href="#windows.rpc.RPCClient.alpc_client" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The <a class="reference internal" href="alpc.html#windows.alpc.AlpcClient" title="windows.alpc.AlpcClient"><code class="xref py py-class docutils literal notranslate"><span class="pre">windows.alpc.AlpcClient</span></code></a> used to communicate with the server</p>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="windows.rpc.RPCClient.bind">
|
||||
<code class="descname">bind</code><span class="sig-paren">(</span><em>IID_str</em>, <em>version=(1</em>, <em>0)</em><span class="sig-paren">)</span><a class="reference internal" href="_modules/windows/rpc/client.html#RPCClient.bind"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.rpc.RPCClient.bind" title="Permalink to this definition">¶</a></dt>
|
||||
@@ -222,7 +231,7 @@ Can be used to craft request without directly sending it</p>
|
||||
<span class="gp">>>> </span><span class="n">client</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">rpc</span><span class="o">.</span><span class="n">find_alpc_endpoint_and_connect</span><span class="p">(</span><span class="n">UAC_UIID</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">client</span>
|
||||
<span class="go"><windows.rpc.client.RPCClient object at 0x046A1470></span>
|
||||
<span class="gp">>>> </span><span class="n">client</span><span class="o">.</span><span class="n">alpc_client</span><span class="o">.</span><span class="n">portname</span>
|
||||
<span class="gp">>>> </span><span class="n">client</span><span class="o">.</span><span class="n">alpc_client</span><span class="o">.</span><span class="n">port_name</span>
|
||||
<span class="go">'\\RPC Control\\LRPC-c30c67fef2afa1612b'</span>
|
||||
<span class="gp">>>> </span><span class="n">iid</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">bind</span><span class="p">(</span><span class="n">UAC_UIID</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">iid</span>
|
||||
@@ -264,7 +273,7 @@ Can be used to craft request without directly sending it</p>
|
||||
|
||||
</dd></dl>
|
||||
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="kn">as</span> <span class="nn">gdef</span>
|
||||
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">windows.generated_def</span> <span class="k">as</span> <span class="nn">gdef</span>
|
||||
<span class="gp">>>> </span><span class="n">sid</span> <span class="o">=</span> <span class="n">windows</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">get_known_sid</span><span class="p">(</span><span class="n">gdef</span><span class="o">.</span><span class="n">WinLocalSystemSid</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">sid</span>
|
||||
<span class="go">c_void_p(78304040)</span>
|
||||
@@ -342,7 +351,7 @@ Can be used to craft request without directly sending it</p>
|
||||
<dl class="class">
|
||||
<dt id="windows.rpc.ndr.NdrShort">
|
||||
<em class="property">class </em><code class="descclassname">windows.rpc.ndr.</code><code class="descname">NdrShort</code><a class="reference internal" href="_modules/windows/rpc/ndr.html#NdrShort"><span class="viewcode-link">[source]</span></a><a class="headerlink" href="#windows.rpc.ndr.NdrShort" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">windows.rpc</span> <span class="k">import</span> <span class="n">ndr</span>
|
||||
<dd><div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">windows.rpc</span> <span class="kn">import</span> <span class="n">ndr</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">ndr</span><span class="o">.</span><span class="n">NdrShort</span><span class="o">.</span><span class="n">pack</span><span class="p">(</span><span class="mh">0x0102</span><span class="p">)</span>
|
||||
<span class="gp">>>> </span><span class="n">x</span>
|
||||
<span class="go">'\x02\x01'</span>
|
||||
@@ -484,7 +493,7 @@ an attribute <code class="docutils literal notranslate"><span class="pre">MEMBER
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">13. <code class="docutils literal notranslate"><span class="pre">windows.rpc</span></code> – ALPC-based Windows RPC</a><ul>
|
||||
<li><a class="reference internal" href="#rpcclient">13.1. RPCClient</a></li>
|
||||
@@ -545,12 +554,12 @@ an attribute <code class="docutils literal notranslate"><span class="pre">MEMBER
|
||||
<li class="right" >
|
||||
<a href="alpc.html" title="12. windows.alpc – Advanced Local Procedure Call"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+885
-134
File diff suppressed because it is too large
Load Diff
Vendored
+10
-6
@@ -6,14 +6,18 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>Search — PythonForWindows 0.5 documentation</title>
|
||||
<title>Search — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<script type="text/javascript" src="_static/searchtools.js"></script>
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="#" />
|
||||
@@ -34,7 +38,7 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -85,12 +89,12 @@
|
||||
<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.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+11
-8
@@ -6,14 +6,17 @@
|
||||
<head>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>5. windows.security – Security Descriptor & related — PythonForWindows 0.5 documentation</title>
|
||||
<title>5. windows.security – Security Descriptor & related — PythonForWindows 0.6 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" />
|
||||
<link rel="stylesheet" type="text/css" href="_static/css/mbasic.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>
|
||||
<script type="text/javascript" src="_static/language_data.js"></script>
|
||||
|
||||
<link rel="index" title="Index" href="genindex.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="6. windows.pipe – Inter-Process Communication" href="pipe.html" />
|
||||
@@ -34,7 +37,7 @@
|
||||
<li class="right" >
|
||||
<a href="winproxy.html" title="4. windows.winproxy – Windows API"
|
||||
accesskey="P">previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</a> »</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -211,7 +214,7 @@ Binary security descriptor can be found in the registry for example</p>
|
||||
<dl class="attribute">
|
||||
<dt id="windows.security.SecurityDescriptor.sacl">
|
||||
<code class="descname">sacl</code><a class="headerlink" href="#windows.security.SecurityDescriptor.sacl" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>The SACL of the security descriptor. You may need special attention to retrieve it (see <code class="xref any docutils literal notranslate"><span class="pre">DEFAULT_SECURITY_INFORMATION</span></code>)</p>
|
||||
<dd><p>The SACL of the security descriptor. You may need special attention to retrieve it (see <code class="xref py py-class docutils literal notranslate"><span class="pre">DEFAULT_SECURITY_INFORMATION</span></code>)</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
@@ -1950,7 +1953,7 @@ You should not need to instanciate/use them directly.</p>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h3><a href="index.html">Table Of Contents</a></h3>
|
||||
<h3><a href="index.html">Table of Contents</a></h3>
|
||||
<ul>
|
||||
<li><a class="reference internal" href="#">5. <code class="docutils literal notranslate"><span class="pre">windows.security</span></code> – Security Descriptor & related</a><ul>
|
||||
<li><a class="reference internal" href="#token">5.1. Token</a></li>
|
||||
@@ -2038,12 +2041,12 @@ You should not need to instanciate/use them directly.</p>
|
||||
<li class="right" >
|
||||
<a href="winproxy.html" title="4. windows.winproxy – Windows API"
|
||||
>previous</a> |</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.5 documentation</a> »</li>
|
||||
<li class="nav-item nav-item-0"><a href="index.html">PythonForWindows 0.6 documentation</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.
|
||||
© Copyright 2015-2020, Clement Rouault.
|
||||
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.8.5.
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user