Changes between Initial Version and Version 4 of Ticket #1000


Ignore:
Timestamp:
Dec 14, 2009 2:10:03 PM (11 years ago)
Author:
bennylp
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #1000

    • Property Status changed from new to reopened
    • Property Summary changed from IPv6 interface enumeration fails due to typo error in Windows targets to IPHLPAPI.DLL issues on Windows Mobile targets and with IPv6 enumeration and
  • Ticket #1000 – Description

    initial v4  
     1== Windows Mobile targets issue == 
     2 
     3Ticket #989 for release 1.5 changed the call to {{{GetProcAddress()}}} to always use ANSI string. This is broken for Windows Mobile. 
     4 
     5There seems to be a difference with {{{GetProcAddress()}}} API signature between Windows (i.e. Win32) and Windows CE (e.g. Windows Mobile). On Windows, the API is declared as: 
     6 
     7{{{ 
     8   FARPROC GetProcAddress( 
     9     HMODULE hModule, 
     10     LPCSTR lpProcName); 
     11}}} 
     12 
     13while on Windows CE: 
     14 
     15{{{ 
     16   FARPROC GetProcAddress( 
     17     HMODULE hModule, 
     18     LPCWSTR lpProcName); 
     19}}} 
     20 
     21Notice the difference with {{{lpProcName}}} argument type. This means that on Windows, even on Unicode Windows, the {{{lpProcName}}} always takes ANSI format, while on Windows CE, the argument follows the UNICODE setting. 
     22 
     23Because of this, yet a different Unicode treatment needs to be used when calling {{{GetProcAddress()}}} (i.e. not following PJLIB's Unicode setting) 
     24 
     25== IPv6 interface enumeration fails due to typo error in Windows targets == 
     26 
    127The PJLIB {{{pj_enum_ip_interface()}}} API enumerates all IP interfaces in the system with the specified address family. On Windows, the function should use {{{GetAdaptersAddresses()}}} Windows API if IPv6 is enabled, and fallback to use {{{GetIpAddrTable()}}} Windows API if {{{GetAdaptersAddresses()}}} fails. 
    228