
    [
#gP                         d dl Z d dlmZmZ d dlmZ  e j                  e      Z G d dej                  ej                        ZdeiZy)    N)
exceptionsobjects)poolc                       e Zd ZdZdefdZy)_SHUTDOWN_PACKETzClass for _SHUTDOWN_PACKET objects found in IoSh pools.

    This class serves as a base class for all pooled shutdown callback packets.

    It exposes a function which sanity-checks structure members.
    returnc                    	 | j                   j                  j                         r>| j                   j                  j                         r| j                  j                         sy| j                  }|r|j
                  j                  dz  dk(  s/t        j                  d| j                  j                  dd       y	 	 |j                         }|j                  j                  dk(  }|S # t        j                  $ r1 t        j                  d| j                  j                  dd       Y yw xY w# t         $ r0 t        j                  d	| j                  j                  d       Y yw xY w)
z&
        Perform some checks.
        Fi   r   zcallback obj 0xxz% invalid due to invalid device objectz& invalid due to invalid address accessDevicez'Could not get NameInfo for object at 0x)EntryFlinkis_readableBlinkDeviceObjectDriverObjectDriverStartvollogdebugvoloffsetr   InvalidAddressExceptionget_object_headerNameInfoName
ValueError)selfdeviceheadervalids       l/home/panchajanya/Development/work/volatility3/volatility3/framework/symbols/windows/extensions/callbacks.pyis_validz_SHUTDOWN_PACKET.is_valid   s<   	

  ,,.JJ$$002%%113&&F&"5"5"A"AF"Ja"O%dhhooa%88]^ 	 #P	--/FOO((H4EL 11 	LL!$((//!!44Z[ 		  	LLB488??STBUVW	s,   A"C+ %AC+  *D2 +AD/.D/26E+*E+N)__name__
__module____qualname____doc__boolr!        r    r   r   	   s    $ r(   r   )loggingvolatility3.frameworkr   r   0volatility3.framework.symbols.windows.extensionsr   	getLoggerr"   r   
StructTypeExecutiveObjectr   class_types_x86r'   r(   r    <module>r0      sH     5 A			8	$'w))4+?+? 'T &'78r(   