Question regarding SIO_GET_EXTENSION_FUNCTION_POINTER

Nicholas LaRoche nlaroche at vt.edu
Tue Sep 8 11:03:22 CDT 2009


Mike Kaplinskiy wrote:
> On Mon, Sep 7, 2009 at 11:08 AM, Nicholas LaRoche<nlaroche at vt.edu> wrote:
>> Mike Kaplinskiy wrote:
>>> On Mon, Sep 7, 2009 at 2:45 AM, Nicholas LaRoche<nlaroche at vt.edu> wrote:
>>>> I ran into a bug last week regarding the lack of
>>>> SIO_GET_EXTENSION_FUNCTION_POINTER support in WSAIoctl.
>>>>
>>>> Are there any outstanding issues preventing it's implementation?
>>>>
>>>> Perhaps if anyone has worked in this area, are there any things I should
>>>> look out for when trying to implement it? At first glance it looks like
>>>> returning an arbitrary pointer may prove tricky since wine likes to
>>>> relocate
>>>> DLLs to unpredictable addresses at runtime. (i.e. kernel32.dll is not
>>>> predictably mapped to a single address as with Windows XP; turning off
>>>> ASR
>>>> for the current shell has no effect)
>>>>
>>>> -Nick
>>>>
>>>>
>>>>
>>> There is nothing particularly hard about implementing it.
>>> SIO_GET_EXTENSION_FUNCTION_POINTER is microsoft's special "winsock
>>> extensions"; it is a way to call functions like AcceptEx,
>>> GetAcceptExSockaddrs, ConnectEx, DisconnectEx, and TransmitFile. Each
>>> of these functions has its own guid which you pass to wsaioctl to get
>>> a pointer to it (look at ws2_32 acceptex tests). It doesn't matter
>>> what the memory maps to, it's simply that they are not implemented.
>>>
>>> For AcceptEx & GetAcceptExSockaddrs, there is a patch in the mailing
>>> list that implemented them, but Alexandre rejected the patch.
>>>
>>> Mike.
>>>
>> Those patches are exactly what I was looking for. Thanks!
>>
>> What revision did you test on?
>>
>> -Nick
>>
>>
> 
> The last revision i had was try 6, and it should apply cleanly to master.
> 
> Mike.
> 

I had a few issues applying your patches to the latest git revision, but 
  I did find equivalent functionality in wine-hacks. This solved my 
problem however the code in this tree doesn't support AcceptEx with TCP.

http://repo.or.cz/w/wine/hacks.git

-Nick



More information about the wine-devel mailing list