[Bug 8277] New: Enhancement: NtQueryInformationThread with ThreadQuerySetWin32StartAddress

Wine Bugs wine-bugs at winehq.org
Fri May 4 17:48:21 CDT 2007


http://bugs.winehq.org/show_bug.cgi?id=8277

           Summary: Enhancement: NtQueryInformationThread with
                    ThreadQuerySetWin32StartAddress
           Product: Wine
           Version: 0.9.36.
          Platform: All
        OS/Version: other
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P2
         Component: wine-misc
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: focht at gmx.net


Hello,

just before this gets lost on my harddisk i "backup" this information in
bugzilla database.
Maybe it's useful for someone working on extending NtQueryInformationThread :-)

In the past, i encountered a number of applications/installers which regularly
use NtQueryInformationThread info classes to gather thread information.
One of these is "thread entry point" information represented by
"ThreadQuerySetWin32StartAddress" information class.
This is currently not implemented in wine.

--- snip ---
fixme:thread:NtQueryInformationThread info class 9 not supported yet
--- snip ---

I added a working implementation (fairly straight-forward).
Callers can now query the address of thread entry point.
This is useful for clients which do not act as debuggers (debuggers get this
info for free in DEBUG events), e.g. for callstack/crash info/logging purpose
and the like.

I implemented only the "query" case, not the "set". This is on purpose.
Windows uses the "set" only once to transfer thread entry address into kernel
(BaseProcessStart(up)), Reactos does the same.
Wine has different init sequence so this is not needed at all (would have been
no use to modify entry point address after thread has started).

While adding some bits of code i noticed wine doesnt handle return data buffer
length mismatches in NtQueryInformationThread the way Windows and Reactos do.
Wine just copies data up to supplied length, even on length mismatch case.
Windows and reactos return STATUS_INFO_LENGTH_MISMATCH if returned information
class data size doesnt match the supplied one (length parameter).

One can verify this by call various information classes with wrong length.
The optional "returned length" parameter is only filled in success case (not
even if info class size mismatch or internal API fails).

Patch for ThreadQuerySetWin32StartAddress information class following in next
attachment.

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the wine-bugs mailing list