1#if !defined(resip_WinCompat_hxx)
2#define resip_WinCompat_hxx
51 static Version getVersion();
53 class Exception final :
public BaseException
56 Exception(
const Data& msg,
const Data&
file,
int line);
57 const char* name()
const noexcept override {
return "TransportException"; }
60 static GenericIPAddress determineSourceInterface(
const GenericIPAddress& destination);
61 static std::list<std::pair<Data,Data> > getInterfaces(
const Data& matching);
62 static void destroyInstance();
64 static bool windowsEventLog(WORD type, WORD numStrings, LPCTSTR* strings);
67 static WinCompat* instance();
68 static WinCompat* mInstance;
70 static GenericIPAddress determineSourceInterfaceWithIPv6(
const GenericIPAddress& destination);
71 static GenericIPAddress determineSourceInterfaceWithoutIPv6(
const GenericIPAddress& destination);
72 typedef DWORD (WINAPI * GetBestInterfaceExProc)(
const sockaddr *, DWORD *);
73 typedef DWORD (WINAPI * GetAdaptersAddressesProc)(ULONG, DWORD, VOID *, IP_ADAPTER_ADDRESSES *, ULONG *);
74 typedef DWORD (WINAPI * GetAdaptersInfoProc)(PIP_ADAPTER_INFO, PULONG);
75 typedef DWORD (WINAPI * GetBestRouteProc)(DWORD dwDestAddr, DWORD dwSourceAddr, PMIB_IPFORWARDROW pBestRoute);
76 typedef DWORD (WINAPI * GetIpAddrTableProc)(PMIB_IPADDRTABLE pIpAddrTable, PULONG pdwSize, BOOL bOrder);
81 GetBestInterfaceExProc getBestInterfaceEx;
82 GetAdaptersAddressesProc getAdaptersAddresses;
83 GetAdaptersInfoProc getAdaptersInfo;
84 GetBestRouteProc getBestRoute;
85 GetIpAddrTableProc getIpAddrTable;
86 bool loadLibraryWithIPv4Failed;
87 bool loadLibraryWithIPv6Failed;
dcm! – add UnusedChecking(_enum) below;