o
    j
                     @   sJ   d dl Z d dlT d dlmZ G dd dZG dd dZG dd	 d	ZdS )
    N)*)MINIDUMP_MEMORY_DESCRIPTORc                   @   s    e Zd Zdd Zedd ZdS )MINIDUMP_THREAD_EX_LISTc                 C   s   d | _ g | _d S N)NumberOfThreadsThreadsself r
   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/minidump/streams/ThreadExListStream.py__init__   s   
z MINIDUMP_THREAD_EX_LIST.__init__c                 C   sD   t  }tj| dddd|_t|jD ]}|jt	|  q|S )N   littleF	byteordersigned)
r   int
from_bytesreadr   ranger   appendMINIDUMP_THREAD_EXparse)buffmtel_r
   r
   r   r      s
   zMINIDUMP_THREAD_EX_LIST.parseN)__name__
__module____qualname__r   staticmethodr   r
   r
   r
   r   r      s    r   c                   @   s4   e Zd Zdd Zedd Zedd Zdd Zd	S )
r   c                 C   s4   d | _ d | _d | _d | _d | _d | _d | _d | _d S r   )ThreadIdSuspendCountPriorityClassPriorityTebStackThreadContextBackingStorer   r
   r
   r   r      s   
zMINIDUMP_THREAD_EX.__init__c                 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|_t	
| |_t
| |_t	
| |_|S )Nr   r   Fr      )r   r   r   r   r    r!   r"   r#   r$   r   r   r%   MINIDUMP_LOCATION_DESCRIPTORr&   r'   )r   mter
   r
   r   r   &   s   zMINIDUMP_THREAD_EX.parsec                   C   s   g dS )N)r    r!   r"   r#   r$   r
   r
   r
   r
   r   
get_header3   s   zMINIDUMP_THREAD_EX.get_headerc                 C   s,   t | jt| jt| jt| jt | jgS r   )hexr    strr!   r"   r#   r$   r   r
   r
   r   to_row?   s   zMINIDUMP_THREAD_EX.to_rowN)r   r   r   r   r   r   r+   r.   r
   r
   r
   r   r      s    


r   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 )MinidumpThreadExListc                 C   s
   g | _ d S r   )threadsr   r
   r
   r   r   L   s   
zMinidumpThreadExList.__init__c                 C   s>   t  }|| jj t|| jj}t	|}|j
|_|S r   )r/   seekLocationRvaioBytesIOr   DataSizer   r   r   r0   )dirr   tchunkmtlr
   r
   r   r   O   s   
zMinidumpThreadExList.parsec                    sP   t  }|| jjI d H  || jjI d H }t|}t	|}|j
|_|S r   )r/   r1   r2   r3   r   r6   r4   r5   r   r   r   r0   )r7   r   r8   
chunk_datar9   r:   r
   r
   r   aparseX   s   

zMinidumpThreadExList.aparsec                 C   s0   g }| t  | jD ]	}| |  q|S r   )r   r   r+   r0   r.   )r	   r8   threadr
   r
   r   to_tableb   s
   
zMinidumpThreadExList.to_tablec                 C   s   dt |   S )Nz== ThreadExList ==
)construct_tabler>   r   r
   r
   r   __str__i   s   zMinidumpThreadExList.__str__N)	r   r   r   r   r   r   r<   r>   r@   r
   r
   r
   r   r/   K   s    

	r/   )r4   minidump.common_structs!minidump.streams.MemoryListStreamr   r   r   r/   r
   r
   r
   r   <module>   s   0