NtProtectVirtualMemory
Robert Shearman
rob at codeweavers.com
Wed Apr 5 17:16:59 CDT 2006
Segin wrote:
> Robert Shearman wrote:
>
>> Segin wrote:
>>
>>> Could someone clue me in to just what this means and why it is:
>>> err:virtual:NtProtectVirtualMemory Unsupported on other process
>>>
>>> A quick Google comes up that function is undocumented, so I don't
>>> have much info on it.
>>>
>>> From the wine source:
>>>
>>> if (!is_current_process( process ))
>>> {
>>> ERR("Unsupported on other process\n");
>>> return STATUS_ACCESS_DENIED;
>>> }
>>>
>>> And that's self explanitory, but why is it "Unsupported on other
>>> process"?
>>
>>
>>
>>
>> The POSIX & Linux equivalent doesn't take a process ID as an
>> argument, hence it only operates on the current process.
>>
> Hmm... Intresting. I am going to assume, from what I have seen, that
> emulated Win32 processes have a represenative POSIX process. Is it
> possible to implement a lookup table of sorts to make it work
> cross-process?
>
There is already a lookup in the server, but there is no cross-process
syscall for NtProtectVirtualMemory (and in fact for all of the other
virtual memory functions). The cleanest fix is to get the kernel to
support this. One suggested way of fixing this and other cross-process
problems in Wine without kernel support is to change the context of the
target process to set up a call to the relevant function and restore the
registers afterwards. AFAIK, no one has tried to implement this yet.
--
Rob Shearman
More information about the wine-devel
mailing list