o
    j0                     @   s   d dl Z d dlZd dlT G dd dejZG dd dejZG dd dejZG d	d
 d
ZG dd dZG dd dZ	G dd dZ
dS )    N)*c                   @   sD   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
Zd
ZdZdZdZdS )AllocationProtectr          @                  i   @   i   i   N)__name__
__module____qualname__NONEPAGE_EXECUTEPAGE_EXECUTE_READPAGE_EXECUTE_READWRITEPAGE_EXECUTE_WRITECOPYPAGE_NOACCESSPAGE_READONLYPAGE_READWRITEPAGE_WRITECOPYPAGE_TARGETS_INVALIDPAGE_TARGETS_NO_UPDATE
PAGE_GUARDPAGE_NOCACHEPAGE_WRITECOMBINE r   r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/streams/MemoryInfoListStream.pyr   
   s    r   c                   @      e Zd ZdZdZdZdS )
MemoryTypei   i   i   N)r   r   r   	MEM_IMAGE
MEM_MAPPEDMEM_PRIVATEr   r   r   r   r!   7       r!   c                   @   r    )MemoryStatei   i   i    N)r   r   r   
MEM_COMMITMEM_FREEMEM_RESERVEr   r   r   r   r&   ;   r%   r&   c                   @   s0   e Zd Zdd Zdd Zdd Zedd Zd	S )
MINIDUMP_MEMORY_INFO_LISTc                 C   s   d| _ d| _d | _g | _d S )Nr   0   )SizeOfHeaderSizeOfEntryNumberOfEntriesentriesselfr   r   r   __init__C   s   
z"MINIDUMP_MEMORY_INFO_LIST.__init__c                 C   s   | j t| jt    S N)r,   lenr/   MINIDUMP_MEMORY_INFOget_sizer0   r   r   r   r6   I   s   z"MINIDUMP_MEMORY_INFO_LIST.get_sizec                 C   sF   | j jdddd}|| jjdddd7 }|t| jjdddd7 }|S Nr
   littleF	byteordersignedr   )r,   to_bytesr-   r4   r/   r1   tr   r   r   r<   L   s   z"MINIDUMP_MEMORY_INFO_LIST.to_bytesc                 C   sR   t  }tj| dddd|_tj| dddd|_tj| dddd|_|S r7   )r*   int
from_bytesreadr,   r-   r.   )buffmhdsr   r   r   parseR   s
   zMINIDUMP_MEMORY_INFO_LIST.parseN)r   r   r   r2   r6   r<   staticmethodrD   r   r   r   r   r*   B   s    r*   c                   @   s8   e Zd Zdd Zdd Zdd Zdd Zed	d
 ZdS )r5   c                 C   s:   d | _ d | _d | _d| _d | _d | _d | _d | _d| _d S )Nr   )	BaseAddressAllocationBaser   !_MINIDUMP_MEMORY_INFO__alignment1
RegionSizeStateProtectType!_MINIDUMP_MEMORY_INFO__alignment2r0   r   r   r   r2   ]   s   
zMINIDUMP_MEMORY_INFO.__init__c                 C   s   dS )Nr+   r   r0   r   r   r   r6   h   s   zMINIDUMP_MEMORY_INFO.get_sizec                 C   s.   d}| j D ]}|d|t| j | f 7 }q|S )N z	%s : %s
)__dict__str)r1   r>   kr   r   r   __str__k   s   
zMINIDUMP_MEMORY_INFO.__str__c                 C   s   | j jdddd}|| jjdddd7 }|| jjdddd7 }|| jjdddd7 }|| jjdddd7 }|| jjjdddd7 }|| jjjdddd7 }|| j	jjdddd7 }|| j
jdddd7 }|S Nr   r8   Fr9   r
   )rF   r<   rG   r   rH   rI   rJ   valuerK   rL   rM   r=   r   r   r   r<   q   s   zMINIDUMP_MEMORY_INFO.to_bytesc                 C   s  t  }tj| dddd|_tj| dddd|_tj| dddd|_tj| dddd|_tj| dddd|_zt	tj| dddd|_
W n   Y zttj| dddd|_W n   Y zttj| dddd|_W n   Y tj| dddd|_|S rS   )r5   r?   r@   rA   rF   rG   r   rH   rI   r&   rJ   rK   r!   rL   rM   )rB   mmir   r   r   rD   }   s(      zMINIDUMP_MEMORY_INFO.parseN)	r   r   r   r2   r6   rR   r<   rE   rD   r   r   r   r   r5   \   s    r5   c                   @   s4   e Zd Zdd Zedd Zedd Zdd Zd	S )
MinidumpMemoryInfoc                 C   s.   d | _ d | _d | _d | _d | _d | _d | _d S r3   rF   rG   r   rI   rJ   rK   rL   r0   r   r   r   r2      s   
zMinidumpMemoryInfo.__init__c                 C   sB   t  }| j|_| j|_| j|_| j|_| j|_| j|_| j|_|S r3   )rV   rF   rG   r   rI   rJ   rK   rL   )r>   rB   rU   r   r   r   rD      s   zMinidumpMemoryInfo.parsec                  C   s   g d} | S )NrW   r   )r>   r   r   r   
get_header   s   	zMinidumpMemoryInfo.get_headerc                 C   s^   t | jt | jt| jt | j| jr| jjnd| jr| jjnd| j	r*| j	jg}|S dg}|S )NzN/A)
hexrF   rG   rP   r   rI   rJ   namerK   rL   r=   r   r   r   to_row   s   		zMinidumpMemoryInfo.to_rowN)r   r   r   r2   rE   rD   rX   r[   r   r   r   r   rV      s    	

rV   c                   @   s<   e Zd Zdd Zedd Zedd Zdd Zd	d
 ZdS )MinidumpMemoryInfoListc                 C   s   d | _ g | _d S r3   )headerinfosr0   r   r   r   r2      s   
zMinidumpMemoryInfoList.__init__c                 C   sl   t  }|| jj || jj}t|}t	||_
t|j
jD ]}t	|}|jt	|| q"|S r3   r\   seekLocationRvarA   DataSizeioBytesIOr*   rD   r]   ranger.   r5   r^   appendrV   dirrB   r>   datachunk_mir   r   r   rD      s   

zMinidumpMemoryInfoList.parsec                    sz   t  }|| jjI d H  || jjI d H }t|}t	||_
t|j
jD ]}t	|}|jt	|d  q)|S r3   r_   rh   r   r   r   aparse   s   

zMinidumpMemoryInfoList.aparsec                 C   s0   g }| t  | jD ]	}| |  q|S r3   )rg   rV   rX   r^   r[   )r1   r>   infor   r   r   to_table   s
   
zMinidumpMemoryInfoList.to_tablec                 C   s   dt |   S )Nz== MinidumpMemoryInfoList ==
)construct_tablerp   r0   r   r   r   rR      s   zMinidumpMemoryInfoList.__str__N)	r   r   r   r2   rE   rD   rn   rp   rR   r   r   r   r   r\      s    

r\   )rd   enumminidump.common_structsEnumr   r!   r&   r*   r5   rV   r\   r   r   r   r   <module>   s   -90