
    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dS )	    N)List)	renderers
exceptions
interfaces)requirements)plugins)intelc                   ^    e Zd ZdZdZedeej        j	                 fd            Z
d Zd ZdS )
Statisticsz(Lists statistics about the memory space.)   r   r   returnc                 6    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   s1     49()4  
 	
    c              #     K   | j         j        | j        d                  }dx}x}x}x}x}x}}t          |t          j                  rod}	d|j        z  }
|	|j        k     rW	 t          |	                    |	d|
z                      d         \  }}}}}||j        d         k    r|dz  }n|dz  }||
k    r|dz  }n# t          j        $ r$}|dz  }d|j        z  }||
k    r|dz  }Y d }~nd }~wt          j        $ r$}|dz  }d|j        z  }||
k    r|dz  }Y d }~nkd }~wt          j        $ rV}|dz  }|
}t                              d                    t%          |j                  |j                             Y d }~nd }~ww xY w|	|z  }	|                     |	dz  |j        z  d           |	|j        k     Wd|||||||ffV  d S )	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   s     #DK	$:; 34	4
 	4Z 	4"4 	47G 	4	4-eU[)) %	I!"e&=!=e33359i5G1GHH6 662Aq!Y
 "U\.%AAA"a

"a
 #555(A-(!@ . . .!OJ !T%6 6I $666(A-(!> 1 1 1&!+& !T%6 6I $666+q0+!9   !Q&M 2ILLahh 455t         Y&	''_(==?O  ? e333H   "#
 	
 	
 	
 	
 	
s2   "AB< <FC**F<DF-AE>>F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|                                           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   sc    !$c*&,&,(#.&,(#.,c2 OO
 
 	
r   N)__name__
__module____qualname____doc___required_framework_versionclassmethodr   r   configurationRequirementInterfacer   r@   rD    r   r   r   r      so        22"+
j&>&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      s           C C C C C C C C C C < < < < < < 4 4 4 4 4 4 . . . . . .		8	$	$W
 W
 W
 W
 W
( W
 W
 W
 W
 W
r   