Apperantly, GetThreadId là một API của Vista. Làm thế nào tôi có thể nhận được một id của thread trên hệ thống trước vista?GetThreadId trên hệ thống pre-vista?
Trả lời
Có một vài lựa chọn:
- Khi bạn gọi CreateThread, bạn sẽ có được xử lý lại.
- Bạn có thể gọi GetCurrentThreadId để nhận ID của chuỗi hiện tại.
- Bạn có thể sử dụng Thread32First/Thread32Next để liệt kê chủ đề.
Nếu bạn bằng cách nào đó có thể làm cho chuỗi đang được đề cập, hãy gọi GetCurrentThreadId và lưu trữ ở đâu đó, bạn có thể đọc kết quả.
Điều này làm việc tốt nhất cho tôi, chỉ cần gọi đó là tạo và lưu trữ bằng threadhandle! cảm ơn –
Nếu chuỗi đang đề cập vào trạng thái chờ cảnh báo thường xuyên, bạn có thể gửi APC bằng QueueUserAPC; trình xử lý APC sau đó có thể gọi GetCurrentThreadId và truyền đạt kết quả cho người gọi bằng bất kỳ phương thức nào bạn thích.
Bạn cũng có thể thực hiện việc này với các chức năng NT không có giấy tờ. Sử dụng NtQueryInformationThread() trên lớp ThreadBasicInformation sẽ cung cấp cho bạn ID chủ đề trong số returned structure. Một ví dụ có thể được tìm thấy trong wine source. Tuy nhiên, tôi không chắc chắn các phiên bản của cửa sổ này có sẵn - hãy ghi nhớ các chức năng không có giấy tờ này có thể thay đổi bất cứ lúc nào, vì vậy tốt nhất là kiểm tra chúng trên các phiên bản cũ hơn của cửa sổ mà bạn quan tâm và chỉ cần sử dụng GetThreadId() nơi có sẵn.
Lưu ý rằng các hàm không có giấy tờ này chỉ có thể được truy cập bằng LoadLibrary() và GetProcAddress() trên NTDLL; họ không có thư viện nhập khẩu. According to MSDN, khai báo cho các cấu trúc dữ liệu có thể được tìm thấy trong Winternl.h
, nhưng nếu không, chỉ cần xác định chúng mình dựa trên các liên kết ntinternals ở trên.
Bất kỳ ai quan tâm đến đây là cách người ta có thể gọi 'NtQueryInformationThread': http://www.snip2code.com/Snippet/85443/GetProcessIdOfThread()-on-Windows-XP – c00000fd
- 1. Hệ thống tập tin giả trên * nix
- 2. Cuộc gọi hệ thống trên Windows
- 3. Lưới lọc trên hệ thống đa lõi
- 4. Query trên Chọn hệ thống Gọi
- 5. Mailbox Processor trên Hệ thống phân phối
- 6. NCover trên hệ thống 64 bit
- 7. Hệ thống tệp dựa trên thẻ
- 8. Hiệu ứng hệ thống trên hiệu suất
- 9. Biên soạn trên hệ thống 64 bit cho hệ thống 32 bit - khả năng tương thích
- 10. Trên hệ thống/hệ thống tập tin nào là os.open() nguyên tử?
- 11. Hệ thống kiểu thống nhất là gì?
- 12. Python tạo hệ thống
- 13. hệ thống awk gọi
- 14. Hệ thống tệp TreeView
- 15. C# PInvoking user32.dll trên hệ thống 64 bit
- 16. vb.net hệ thống âm thanh bíp trên XP
- 17. Mẫu thiết kế cấu hình trên hệ thống Java
- 18. Vô hiệu hóa OutputCache trên hệ thống phát triển
- 19. lỗi Đăng nhập vận tốc trên hệ thống Linux
- 20. móc khóa bàn phím hệ thống trên X dưới linux
- 21. Gọi chức năng NT trên hệ thống trước NT
- 22. Grep trên nhiều tệp trong Hệ thống tệp Hadoop
- 23. Xác định số ngẫu nhiên trên các hệ thống
- 24. Hệ thống biểu tượng trên khay trong ứng dụng Node.js
- 25. Hệ thống định vị trong nhà trên IOS 6
- 26. PHP Profiler cho hệ thống trực tiếp trên Apache
- 27. Sách trên lý thuyết về hệ thống tập tin
- 28. Giá trị hệ thống ghi đè trên máy Mac
- 29. Lưu trữ PDF do hệ thống tạo trên S3
- 30. thuộc tính hệ thống Android - unset chúng trên dòng lệnh
trong trường hợp điều tra, có cách nào để xác định chuỗi nào được liệt kê tương ứng với một HANDLE mà bạn có không? – bdonlan
Bạn vượt qua quá trình xử lý hiện tại của bạn để CreateToolhelp32Snapshot với cờ TH32CS_SNAPMODULE. Điều này sẽ chỉ liệt kê các luồng trong tiến trình của bạn. –
Nhưng nó sẽ không cho phép bạn biết sự khác biệt giữa các chủ đề _within_ module của bạn, phải không? – bdonlan