
    Xf                         d dl Z d dlmZ d dlmZmZmZ d dlmZ d dl	m
Z
 d dlmZ  e j                  e      Z G d de
j                         Zy)	    N)List)	renderers
exceptions
interfaces)requirements)plugins)intelc                   d    e Zd ZdZdZedeej                  j                     fd       Z
d Zd Zy)
Statisticsz(Lists statistics about the memory space.)   r   r   returnc                 8    t        j                  ddddg      gS )NprimaryzMemory layer for the kernelIntel32Intel64)namedescriptionarchitectures)r   TranslationLayerRequirement)clss    X/home/panchajanya/Development/work/volatility3/volatility3/plugins/windows/statistics.pyget_requirementszStatistics.get_requirements   s*     449()4
 	
    c              #     K   | j                   j                  | j                  d      }dx}x}x}x}x}x}}t        |t        j
                        rd}	d|j                  z  }
|	|j                  k  r	 t        |j                  |	d|
z              d   \  }}}}}||j                  d   k7  r|dz  }n|dz  }||
kD  r|dz  }|	|z  }	| j+                  |	dz  |j                  z  d       |	|j                  k  rd|||||||ff y # t        j                  $ r(}|dz  }d|j                  z  }||
k7  r|dz  }Y d }~{d }~wt        j                  $ r(}|dz  }d|j                  z  }||
k7  r|dz  }Y d }~d }~wt        j                  $ rT}|dz  }|
}t        j!                  dj#                  t%        |j&                        |j(                               Y d }~d }~ww xY ww)	Nr   r      r   memory_layerzGA non-page lookup invalid address exception occurred at: {} in layer {}d   zReading memory)contextlayersconfig
isinstancer	   Intelbits_per_registermaximum_addresslistmappingr   SwappedInvalidAddressExceptioninvalid_bitsPagedInvalidAddressExceptionInvalidAddressExceptionvollogdebugformathexinvalid_address
layer_name_progress_callback)selflayer
page_count
swap_countinvalid_page_countlarge_page_countlarge_swap_countlarge_invalid_countother_invalid	page_addrexpected_page_size_	page_sizer0   excps                  r   
_generatorzStatistics._generator   s7    ##DKK	$:; 34	4
 	4Z 	4"4 	47G 	4	4-eU[[)I!"e&=&=!=e33359i5G1GH662Aq!Y
 "U\\.%AA"a
"a
 #55(A-(( Y&	''_(=(==?O? e333H   "#
 	
1 "@@ .!OJ !T%6%6 6I $66(A-(!>> 1&!+& !T%6%6 6I $66+q0+!99 !Q&M 2ILLahh 4 45t s\   A/G!2AD  6G!7G!GD;6G!;GE4/G!4G
A	GG!GG!c           
          t        j                  dt        fdt        fdt        fdt        fdt        fdt        fdt        fg| j                               S )NzValid pages (all)zValid pages (large)zSwapped Pages (all)zSwapped Pages (large)zInvalid Pages (all)zInvalid Pages (large)zOther Invalid Pages (all))r   TreeGridintr@   )r2   s    r   runzStatistics.runZ   s^    !!$c*&,&,(#.&,(#.,c2 OO
 	
r   N)__name__
__module____qualname____doc___required_framework_versionclassmethodr   r   configurationRequirementInterfacer   r@   rD    r   r   r   r      s@    2"+
j&>&>&S&S!T 
 
:
x
r   r   )loggingtypingr   volatility3.frameworkr   r   r   #volatility3.framework.configurationr    volatility3.framework.interfacesr   volatility3.framework.layersr	   	getLoggerrE   r+   PluginInterfacer   rM   r   r   <module>rV      sB      C C < 4 .			8	$W
(( W
r   