Ich habe Code, die ich im folgenden Beitrag gefunden:Thema Warte Gründe
How to get thread state (e.g. suspended), memory + CPU usage, start time, priority, etc
Ich untersuche Thread-Zustand, und es gibt die folgende Enumeration, die die Gründe für Thread ‚warten‘ beschreibt Status -
enum KWAIT_REASON
{
Executive,
FreePage,
PageIn,
PoolAllocation,
DelayExecution,
Suspended,
UserRequest,
WrExecutive,
WrFreePage,
WrPageIn,
WrPoolAllocation,
WrDelayExecution,
WrSuspended,
WrUserRequest,
WrEventPair,
WrQueue,
WrLpcReceive,
WrLpcReply,
WrVirtualMemory,
WrPageOut,
WrRendezvous,
Spare2,
Spare3,
Spare4,
Spare5,
Spare6,
WrKernel,
MaximumWaitReason
};
Kann mir jemand erklären, was WrQueue
ist, und vielleicht, was der Unterschied zwischen WrUserRequest
und UserRequest
ist? Die Informationen werden unter Verwendung von NtQuerySystemInformation()
mit SystemProcessInformation
erhalten.
'SystemProcessInformation' gibt keine Threadwartegrundinformationen zurück. – IInspectable
@IInspectable Im Code dieses Posts sehe ich, dass es das Array SYSTEM_PROCESS zurückgibt, das das Array SYSTEM_THREAD für jeden der Prozesse enthält. SYSTEM_THREAD enthält den Wartegrund –
@Intspectable - Sie haben einen Fehler gemacht. 'SystemProcessInformation' gibt ein Array von' SYSTEM_PROCESS_INFORMATION' zurück, das ein Array von 'SYSTEM_ [EXTENDED_] THREAD_INFORMATION enthält und hier existiert ein Member' KWAIT_REASON WaitReason; ' – RbMm