o
    �õ±jN  ã                   @   sf   d dl Z d dlZd dlT 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                   @   s$   e Zd ZdZdZdZdZdZdZdS )Ú	DumpFlagsé   é   é   é   é    é   N)	Ú__name__Ú
__module__Ú__qualname__Ú!MINIDUMP_THREAD_INFO_ERROR_THREADÚ"MINIDUMP_THREAD_INFO_EXITED_THREADÚ$MINIDUMP_THREAD_INFO_INVALID_CONTEXTÚ!MINIDUMP_THREAD_INFO_INVALID_INFOÚ MINIDUMP_THREAD_INFO_INVALID_TEBÚ#MINIDUMP_THREAD_INFO_WRITING_THREAD© r   r   ú˜/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/streams/ThreadInfoListStream.pyr      s    r   c                   @   ó(   e Zd Zdd„ Zdd„ Zedd„ ƒZdS )ÚMINIDUMP_THREAD_INFO_LISTc                 C   s   d | _ d | _d | _d S ©N)ÚSizeOfHeaderÚSizeOfEntryÚNumberOfEntries©Úselfr   r   r   Ú__init__   s   
z"MINIDUMP_THREAD_INFO_LIST.__init__c                 C   sD   | j jjdddd�}|| jjdddd�7 }|| jjdddd�7 }|S ©Nr   ÚlittleF©Ú	byteorderÚsigned)r   ÚvalueÚto_bytesr   r   ©r   Útr   r   r   r$      s   z"MINIDUMP_THREAD_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 r   )r   ÚintÚ
from_bytesÚreadr   r   r   )ÚbuffÚmtilr   r   r   Úparse    s
   zMINIDUMP_THREAD_INFO_LIST.parseN©r
   r   r   r   r$   Ústaticmethodr,   r   r   r   r   r      s
    r   c                   @   r   )ÚMINIDUMP_THREAD_INFOc                 C   ó@   d | _ d | _d | _d | _d | _d | _d | _d | _d | _d | _	d S r   ©
ÚThreadIdr   Ú	DumpErrorÚ
ExitStatusÚ
CreateTimeÚExitTimeÚ
KernelTimeÚUserTimeÚStartAddressÚAffinityr   r   r   r   r   ,   ó   
zMINIDUMP_THREAD_INFO.__init__c                 C   sð   | j jjdddd�}| jr|| jjjdddd�7 }n|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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dddd�7 }|S )Nr   r   Fr    s       r   )r2   r#   r$   r   r3   r4   r5   r6   r7   r8   r9   r:   r%   r   r   r   r$   8   s   zMINIDUMP_THREAD_INFO.to_bytesc                 C   s  t ƒ }tj|  d¡ddd�|_zttj|  d¡ddd�ƒ|_W n   Y 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�|_
tj|  d¡ddd�|_tj|  d¡ddd�|_tj|  d¡ddd�|_|S )Nr   r   Fr    r   )r/   r'   r(   r)   r2   r   r3   r4   r5   r6   r7   r8   r9   r:   )r*   Úmtir   r   r   r,   H   s    zMINIDUMP_THREAD_INFO.parseNr-   r   r   r   r   r/   +   s
    r/   c                   @   ó<   e Zd Zdd„ Zedd„ ƒZedd„ ƒZdd„ Zd	d
„ ZdS )ÚMinidumpThreadInfoc                 C   r0   r   r1   r   r   r   r   r   [   r;   zMinidumpThreadInfo.__init__c                 C   sZ   t ƒ }| j|_| j|_| j|_| j|_| j|_| j|_| j|_| j|_| j	|_	| j
|_
|S r   )r>   r2   r   r3   r4   r5   r6   r7   r8   r9   r:   )r&   r*   r<   r   r   r   r,   g   s   zMinidumpThreadInfo.parsec                   C   s   g d¢S )Nr1   r   r   r   r   r   Ú
get_headerv   s   zMinidumpThreadInfo.get_headerc                 C   sT   t | jƒt| jƒt| jƒt | jƒt| jƒt| jƒt| jƒt| j	ƒt | j
ƒt| jƒg
S r   )Úhexr2   Ústrr   r3   r4   r5   r6   r7   r8   r9   r:   r   r   r   r   Úto_row…   s   özMinidumpThreadInfo.to_rowc                 C   s0   d| j | j| j| j| j| j| j| j| j| j	f
 S )Nz�ThreadId: %x DumpFlags: %s DumpError: %s ExitStatus: %x CreateTime: %s ExitTime: %s KernelTime: %s UserTime: %s StartAddress: %x Affinity: %dr1   r   r   r   r   Ú__str__“   s   *ÿzMinidumpThreadInfo.__str__N)	r
   r   r   r   r.   r,   r?   rB   rC   r   r   r   r   r>   Z   s    

r>   c                   @   r=   )ÚMinidumpThreadInfoListc                 C   s   d | _ g | _d S r   )ÚheaderÚinfosr   r   r   r   r   ˜   s   
zMinidumpThreadInfoList.__init__c                 C   sl   t ƒ }| | jj¡ | | jj¡}t |¡}t 	|¡|_
t|j
jƒD ]}t 	|¡}|j t 	||¡¡ q"|S r   ©rD   ÚseekÚLocationÚRvar)   ÚDataSizeÚioÚBytesIOr   r,   rE   Úranger   r/   rF   Úappendr>   ©Údirr*   r&   ÚdataÚchunkÚ_Úmir   r   r   r,   œ   s   

zMinidumpThreadInfoList.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 r   rG   rP   r   r   r   Úaparse©   s   €

zMinidumpThreadInfoList.aparsec                 C   s0   g }|  t ¡ ¡ | jD ]	}|  | ¡ ¡ q|S r   )rO   r>   r?   rF   rB   )r   r&   Úinfor   r   r   Úto_table¶   s
   
zMinidumpThreadInfoList.to_tablec                 C   s   dt |  ¡ ƒ S )Nz== ThreadInfoList ==
)Úconstruct_tablerX   r   r   r   r   rC   ½   s   zMinidumpThreadInfoList.__str__N)	r
   r   r   r   r.   r,   rV   rX   rC   r   r   r   r   rD   —   s    

rD   )	rL   ÚenumÚminidump.common_structsÚEnumr   r   r/   r>   rD   r   r   r   r   Ú<module>   s   	/=