o
    �õ±jã0  ã                   @   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