Wine-devel
Threads by month
- ----- 2026 -----
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2003 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2002 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2001 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
February 2020
- 80 participants
- 745 discussions
[PATCH 3/6] user32: Handle NULL device and mode parameters in ChangeDisplaySettingsExW().
by Zhiyi Zhang 11 Feb '20
by Zhiyi Zhang 11 Feb '20
11 Feb '20
NULL device and mode means to restore all devices to their registry settings.
Since all user graphics drivers only support the primary adapter now,
it's fine to restore only the primary adapter.
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/user32/sysparams.c | 3 +++
dlls/winemac.drv/display.c | 35 +++++++++++++++++++++++++++++++++++
dlls/winex11.drv/settings.c | 36 ++++++++++++++++++++++++++++++++++++
dlls/winex11.drv/x11drv.h | 1 +
4 files changed, 75 insertions(+)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index c5c98a7ea1..a60e4a2dbd 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -3300,6 +3300,9 @@ LONG WINAPI ChangeDisplaySettingsExW( LPCWSTR devname, LPDEVMODEW devmode, HWND
TRACE("%s %p %p %#x %p\n", debugstr_w(devname), devmode, hwnd, flags, lparam);
TRACE("flags=%s\n", _CDS_flags(flags));
+ if (!devname && !devmode)
+ return USER_Driver->pChangeDisplaySettingsEx(NULL, NULL, hwnd, flags, lparam);
+
if (!devname && devmode)
{
if (!get_primary_adapter(primary_adapter))
diff --git a/dlls/winemac.drv/display.c b/dlls/winemac.drv/display.c
index 4c610c4573..0a05753b8e 100644
--- a/dlls/winemac.drv/display.c
+++ b/dlls/winemac.drv/display.c
@@ -745,6 +745,23 @@ void check_retina_status(void)
}
}
+static BOOL get_primary_adapter(WCHAR *name)
+{
+ DISPLAY_DEVICEW dd;
+ DWORD i;
+
+ dd.cb = sizeof(dd);
+ for (i = 0; EnumDisplayDevicesW(NULL, i, &dd, 0); ++i)
+ {
+ if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE)
+ {
+ lstrcpyW(name, dd.DeviceName);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
/***********************************************************************
* ChangeDisplaySettingsEx (MACDRV.@)
@@ -753,7 +770,9 @@ void check_retina_status(void)
LONG CDECL macdrv_ChangeDisplaySettingsEx(LPCWSTR devname, LPDEVMODEW devmode,
HWND hwnd, DWORD flags, LPVOID lpvoid)
{
+ WCHAR primary_adapter[CCHDEVICENAME];
LONG ret = DISP_CHANGE_BADMODE;
+ DEVMODEW default_mode;
int bpp;
struct macdrv_display *displays;
int num_displays;
@@ -768,6 +787,22 @@ LONG CDECL macdrv_ChangeDisplaySettingsEx(LPCWSTR devname, LPDEVMODEW devmode,
init_original_display_mode();
+ if (!get_primary_adapter(primary_adapter))
+ return DISP_CHANGE_FAILED;
+
+ if (!devname && !devmode)
+ {
+ default_mode.dmSize = sizeof(default_mode);
+ if (!EnumDisplaySettingsExW(primary_adapter, ENUM_REGISTRY_SETTINGS, &default_mode, 0))
+ {
+ ERR("Default mode not found for %s!\n", wine_dbgstr_w(primary_adapter));
+ return DISP_CHANGE_BADMODE;
+ }
+
+ devname = primary_adapter;
+ devmode = &default_mode;
+ }
+
if (macdrv_get_displays(&displays, &num_displays))
return DISP_CHANGE_FAILED;
diff --git a/dlls/winex11.drv/settings.c b/dlls/winex11.drv/settings.c
index 24644db620..3e7a5960f0 100644
--- a/dlls/winex11.drv/settings.c
+++ b/dlls/winex11.drv/settings.c
@@ -252,6 +252,24 @@ static BOOL write_registry_settings(const DEVMODEW *dm)
return ret;
}
+BOOL get_primary_adapter(WCHAR *name)
+{
+ DISPLAY_DEVICEW dd;
+ DWORD i;
+
+ dd.cb = sizeof(dd);
+ for (i = 0; EnumDisplayDevicesW(NULL, i, &dd, 0); ++i)
+ {
+ if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE)
+ {
+ lstrcpyW(name, dd.DeviceName);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
/***********************************************************************
* EnumDisplaySettingsEx (X11DRV.@)
*
@@ -318,9 +336,27 @@ BOOL CDECL X11DRV_EnumDisplaySettingsEx( LPCWSTR name, DWORD n, LPDEVMODEW devmo
LONG CDECL X11DRV_ChangeDisplaySettingsEx( LPCWSTR devname, LPDEVMODEW devmode,
HWND hwnd, DWORD flags, LPVOID lpvoid )
{
+ WCHAR primary_adapter[CCHDEVICENAME];
char bpp_buffer[16], freq_buffer[18];
+ DEVMODEW default_mode;
DWORD i;
+ if (!get_primary_adapter(primary_adapter))
+ return DISP_CHANGE_FAILED;
+
+ if (!devname && !devmode)
+ {
+ default_mode.dmSize = sizeof(default_mode);
+ if (!EnumDisplaySettingsExW(primary_adapter, ENUM_REGISTRY_SETTINGS, &default_mode, 0))
+ {
+ ERR("Default mode not found for %s!\n", wine_dbgstr_w(primary_adapter));
+ return DISP_CHANGE_BADMODE;
+ }
+
+ devname = primary_adapter;
+ devmode = &default_mode;
+ }
+
for (i = 0; i < dd_mode_count; i++)
{
if (devmode->dmFields & DM_BITSPERPEL)
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 98cab8947b..c99985e7e6 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -661,6 +661,7 @@ extern void X11DRV_resize_desktop(unsigned int width, unsigned int height) DECLS
extern BOOL is_virtual_desktop(void) DECLSPEC_HIDDEN;
extern BOOL is_desktop_fullscreen(void) DECLSPEC_HIDDEN;
extern BOOL create_desktop_win_data( Window win ) DECLSPEC_HIDDEN;
+extern BOOL get_primary_adapter(WCHAR *) DECLSPEC_HIDDEN;
extern void X11DRV_Settings_AddDepthModes(void) DECLSPEC_HIDDEN;
extern void X11DRV_Settings_AddOneMode(unsigned int width, unsigned int height, unsigned int bpp, unsigned int freq) DECLSPEC_HIDDEN;
unsigned int X11DRV_Settings_GetModeCount(void) DECLSPEC_HIDDEN;
--
2.20.1
2
1
[PATCH 2/6] user32: Handle NULL device and not NULL mode parameters in ChangeDisplaySettingsExW().
by Zhiyi Zhang 11 Feb '20
by Zhiyi Zhang 11 Feb '20
11 Feb '20
This makes sure that user graphics drivers has a valid device name when a
DEVMODE is specified.
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/user32/sysparams.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index e3919ad1b1..c5c98a7ea1 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -3293,12 +3293,21 @@ static void trace_devmode(const DEVMODEW *devmode)
LONG WINAPI ChangeDisplaySettingsExW( LPCWSTR devname, LPDEVMODEW devmode, HWND hwnd,
DWORD flags, LPVOID lparam )
{
+ WCHAR primary_adapter[CCHDEVICENAME];
BOOL def_mode = TRUE;
DEVMODEW dm;
TRACE("%s %p %p %#x %p\n", debugstr_w(devname), devmode, hwnd, flags, lparam);
TRACE("flags=%s\n", _CDS_flags(flags));
+ if (!devname && devmode)
+ {
+ if (!get_primary_adapter(primary_adapter))
+ return DISP_CHANGE_FAILED;
+
+ devname = primary_adapter;
+ }
+
if (devmode)
{
trace_devmode(devmode);
--
2.20.1
2
1
[PATCH 1/6] user32: Handle NULL device parameter in EnumDisplaySettingsExW().
by Zhiyi Zhang 11 Feb '20
by Zhiyi Zhang 11 Feb '20
11 Feb '20
This makes sure that user graphics drivers always have a valid device name.
Signed-off-by: Zhiyi Zhang <zzhang(a)codeweavers.com>
---
dlls/user32/sysparams.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index a146f31071..e3919ad1b1 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -567,6 +567,24 @@ RECT get_virtual_screen_rect(void)
return info.virtual_rect;
}
+static BOOL get_primary_adapter(WCHAR *name)
+{
+ DISPLAY_DEVICEW dd;
+ DWORD i;
+
+ dd.cb = sizeof(dd);
+ for (i = 0; EnumDisplayDevicesW(NULL, i, &dd, 0); ++i)
+ {
+ if (dd.StateFlags & DISPLAY_DEVICE_PRIMARY_DEVICE)
+ {
+ lstrcpyW(name, dd.DeviceName);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
/* get text metrics and/or "average" char width of the specified logfont
* for the specified dc */
static void get_text_metr_size( HDC hdc, LOGFONTW *plf, TEXTMETRICW * ptm, UINT *psz)
@@ -3394,6 +3412,18 @@ BOOL WINAPI EnumDisplaySettingsExA(LPCSTR lpszDeviceName, DWORD iModeNum,
BOOL WINAPI EnumDisplaySettingsExW(LPCWSTR lpszDeviceName, DWORD iModeNum,
LPDEVMODEW lpDevMode, DWORD dwFlags)
{
+ WCHAR primary_adapter[CCHDEVICENAME];
+
+ TRACE("%s %u %p %#x\n", wine_dbgstr_w(lpszDeviceName), iModeNum, lpDevMode, dwFlags);
+
+ if (!lpszDeviceName)
+ {
+ if (!get_primary_adapter(primary_adapter))
+ return FALSE;
+
+ lpszDeviceName = primary_adapter;
+ }
+
return USER_Driver->pEnumDisplaySettingsEx(lpszDeviceName, iModeNum, lpDevMode, dwFlags);
}
--
2.20.1
2
1
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com>
---
dlls/iphlpapi/ipstats.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/dlls/iphlpapi/ipstats.c b/dlls/iphlpapi/ipstats.c
index f09f042135..6ce322a8d1 100644
--- a/dlls/iphlpapi/ipstats.c
+++ b/dlls/iphlpapi/ipstats.c
@@ -2088,7 +2088,7 @@ DWORD build_tcp_table( TCP_TABLE_CLASS class, void **tablep, BOOL order, HANDLE
{
char buf[512], *ptr;
struct pid_map *map = NULL;
- unsigned int dummy, num_entries = 0;
+ unsigned int num_entries = 0;
int inode;
if (class >= TCP_TABLE_OWNER_PID_LISTENER) map = get_pid_map( &num_entries );
@@ -2097,9 +2097,9 @@ DWORD build_tcp_table( TCP_TABLE_CLASS class, void **tablep, BOOL order, HANDLE
ptr = fgets(buf, sizeof(buf), fp);
while ((ptr = fgets(buf, sizeof(buf), fp)))
{
- if (sscanf( ptr, "%x: %x:%x %x:%x %x %*s %*s %*s %*s %*s %d", &dummy,
+ if (sscanf( ptr, "%*x: %x:%x %x:%x %x %*s %*s %*s %*s %*s %d",
&row.dwLocalAddr, &row.dwLocalPort, &row.dwRemoteAddr,
- &row.dwRemotePort, &row.dwState, &inode ) != 7)
+ &row.dwRemotePort, &row.dwState, &inode ) != 6)
continue;
row.dwLocalPort = htons( row.dwLocalPort );
row.dwRemotePort = htons( row.dwRemotePort );
@@ -2386,7 +2386,7 @@ DWORD build_udp_table( UDP_TABLE_CLASS class, void **tablep, BOOL order, HANDLE
{
char buf[512], *ptr;
struct pid_map *map = NULL;
- unsigned int dummy, num_entries = 0;
+ unsigned int num_entries = 0;
int inode;
if (class >= UDP_TABLE_OWNER_PID) map = get_pid_map( &num_entries );
@@ -2395,8 +2395,8 @@ DWORD build_udp_table( UDP_TABLE_CLASS class, void **tablep, BOOL order, HANDLE
ptr = fgets( buf, sizeof(buf), fp );
while ((ptr = fgets( buf, sizeof(buf), fp )))
{
- if (sscanf( ptr, "%u: %x:%x %*s %*s %*s %*s %*s %*s %*s %d", &dummy,
- &row.dwLocalAddr, &row.dwLocalPort, &inode ) != 4)
+ if (sscanf( ptr, "%*u: %x:%x %*s %*s %*s %*s %*s %*s %*s %d",
+ &row.dwLocalAddr, &row.dwLocalPort, &inode ) != 3)
continue;
row.dwLocalPort = htons( row.dwLocalPort );
@@ -2708,7 +2708,6 @@ DWORD build_udp6_table( UDP_TABLE_CLASS class, void **tablep, BOOL order, HANDLE
unsigned int num_entries = 0;
struct ipv6_addr_scope *addr_scopes;
unsigned int addr_scopes_size = 0;
- unsigned int dummy;
int inode;
addr_scopes = get_ipv6_addr_scope_table(&addr_scopes_size);
@@ -2721,9 +2720,9 @@ DWORD build_udp6_table( UDP_TABLE_CLASS class, void **tablep, BOOL order, HANDLE
{
DWORD *local_addr = (DWORD *)&row.ucLocalAddr;
- if (sscanf( ptr, "%u: %8x%8x%8x%8x:%x %*s %*s %*s %*s %*s %*s %*s %d", &dummy,
+ if (sscanf( ptr, "%*u: %8x%8x%8x%8x:%x %*s %*s %*s %*s %*s %*s %*s %d",
&local_addr[0], &local_addr[1], &local_addr[2], &local_addr[3],
- &row.dwLocalPort, &inode ) != 7)
+ &row.dwLocalPort, &inode ) != 6)
continue;
row.dwLocalScopeId = find_ipv6_addr_scope((const IN6_ADDR *)&row.ucLocalAddr, addr_scopes, addr_scopes_size);
row.dwLocalPort = htons( row.dwLocalPort );
--
2.25.0
2
9
11 Feb '20
Signed-off-by: Alex Henrie <alexhenrie24(a)gmail.com>
---
v2: Restore accidentally removed references to pGetIfEntry2
---
dlls/iphlpapi/tests/Makefile.in | 1 +
dlls/iphlpapi/tests/iphlpapi.c | 1102 ++++++++++++++-----------------
2 files changed, 484 insertions(+), 619 deletions(-)
diff --git a/dlls/iphlpapi/tests/Makefile.in b/dlls/iphlpapi/tests/Makefile.in
index 1aded198db..d813101354 100644
--- a/dlls/iphlpapi/tests/Makefile.in
+++ b/dlls/iphlpapi/tests/Makefile.in
@@ -1,4 +1,5 @@
TESTDLL = iphlpapi.dll
+IMPORTS = iphlpapi
C_SRCS = \
iphlpapi.c
diff --git a/dlls/iphlpapi/tests/iphlpapi.c b/dlls/iphlpapi/tests/iphlpapi.c
index af119e317c..dcc1bcc194 100644
--- a/dlls/iphlpapi/tests/iphlpapi.c
+++ b/dlls/iphlpapi/tests/iphlpapi.c
@@ -41,6 +41,7 @@
#include "ws2tcpip.h"
#include "windns.h"
#include "iphlpapi.h"
+#include "icmpapi.h"
#include "iprtrmib.h"
#include "netioapi.h"
#include "wine/test.h"
@@ -52,41 +53,14 @@
static HMODULE hLibrary = NULL;
static DWORD (WINAPI *pAllocateAndGetTcpExTableFromStack)(void**,BOOL,HANDLE,DWORD,DWORD);
-static DWORD (WINAPI *pGetNumberOfInterfaces)(PDWORD);
-static DWORD (WINAPI *pGetIpAddrTable)(PMIB_IPADDRTABLE,PULONG,BOOL);
-static DWORD (WINAPI *pGetIfEntry)(PMIB_IFROW);
static DWORD (WINAPI *pGetIfEntry2)(PMIB_IF_ROW2);
-static DWORD (WINAPI *pGetFriendlyIfIndex)(DWORD);
-static DWORD (WINAPI *pGetIfTable)(PMIB_IFTABLE,PULONG,BOOL);
static DWORD (WINAPI *pGetIfTable2)(PMIB_IF_TABLE2*);
static DWORD (WINAPI *pGetIfTable2Ex)(MIB_IF_TABLE_LEVEL,PMIB_IF_TABLE2*);
-static DWORD (WINAPI *pGetIpForwardTable)(PMIB_IPFORWARDTABLE,PULONG,BOOL);
-static DWORD (WINAPI *pGetIpNetTable)(PMIB_IPNETTABLE,PULONG,BOOL);
-static DWORD (WINAPI *pGetInterfaceInfo)(PIP_INTERFACE_INFO,PULONG);
-static DWORD (WINAPI *pGetAdaptersInfo)(PIP_ADAPTER_INFO,PULONG);
-static DWORD (WINAPI *pGetNetworkParams)(PFIXED_INFO,PULONG);
-static DWORD (WINAPI *pGetIcmpStatistics)(PMIB_ICMP);
-static DWORD (WINAPI *pGetIpStatistics)(PMIB_IPSTATS);
-static DWORD (WINAPI *pGetTcpStatistics)(PMIB_TCPSTATS);
-static DWORD (WINAPI *pGetUdpStatistics)(PMIB_UDPSTATS);
-static DWORD (WINAPI *pGetIcmpStatisticsEx)(PMIB_ICMP_EX,DWORD);
-static DWORD (WINAPI *pGetIpStatisticsEx)(PMIB_IPSTATS,DWORD);
-static DWORD (WINAPI *pGetTcpStatisticsEx)(PMIB_TCPSTATS,DWORD);
-static DWORD (WINAPI *pGetUdpStatisticsEx)(PMIB_UDPSTATS,DWORD);
-static DWORD (WINAPI *pGetTcpTable)(PMIB_TCPTABLE,PDWORD,BOOL);
-static DWORD (WINAPI *pGetUdpTable)(PMIB_UDPTABLE,PDWORD,BOOL);
static DWORD (WINAPI *pGetUdp6Table)(PMIB_UDP6TABLE,PDWORD,BOOL);
-static DWORD (WINAPI *pGetPerAdapterInfo)(ULONG,PIP_PER_ADAPTER_INFO,PULONG);
-static DWORD (WINAPI *pGetAdaptersAddresses)(ULONG,ULONG,PVOID,PIP_ADAPTER_ADDRESSES,PULONG);
static DWORD (WINAPI *pGetUnicastIpAddressEntry)(MIB_UNICASTIPADDRESS_ROW*);
static DWORD (WINAPI *pGetUnicastIpAddressTable)(ADDRESS_FAMILY,MIB_UNICASTIPADDRESS_TABLE**);
-static DWORD (WINAPI *pNotifyAddrChange)(PHANDLE,LPOVERLAPPED);
-static BOOL (WINAPI *pCancelIPChangeNotify)(LPOVERLAPPED);
static DWORD (WINAPI *pGetExtendedTcpTable)(PVOID,PDWORD,BOOL,ULONG,TCP_TABLE_CLASS,ULONG);
static DWORD (WINAPI *pGetExtendedUdpTable)(PVOID,PDWORD,BOOL,ULONG,UDP_TABLE_CLASS,ULONG);
-static DWORD (WINAPI *pSetTcpEntry)(PMIB_TCPROW);
-static HANDLE(WINAPI *pIcmpCreateFile)(VOID);
-static DWORD (WINAPI *pIcmpSendEcho)(HANDLE,IPAddr,LPVOID,WORD,PIP_OPTION_INFORMATION,LPVOID,DWORD,DWORD);
static DWORD (WINAPI *pCreateSortedAddressPairs)(const PSOCKADDR_IN6,ULONG,const PSOCKADDR_IN6,ULONG,ULONG,
PSOCKADDR_IN6_PAIR*,ULONG*);
static void (WINAPI *pFreeMibTable)(void*);
@@ -109,41 +83,14 @@ static void loadIPHlpApi(void)
hLibrary = LoadLibraryA("iphlpapi.dll");
if (hLibrary) {
pAllocateAndGetTcpExTableFromStack = (void *)GetProcAddress(hLibrary, "AllocateAndGetTcpExTableFromStack");
- pGetNumberOfInterfaces = (void *)GetProcAddress(hLibrary, "GetNumberOfInterfaces");
- pGetIpAddrTable = (void *)GetProcAddress(hLibrary, "GetIpAddrTable");
- pGetIfEntry = (void *)GetProcAddress(hLibrary, "GetIfEntry");
pGetIfEntry2 = (void *)GetProcAddress(hLibrary, "GetIfEntry2");
- pGetFriendlyIfIndex = (void *)GetProcAddress(hLibrary, "GetFriendlyIfIndex");
- pGetIfTable = (void *)GetProcAddress(hLibrary, "GetIfTable");
pGetIfTable2 = (void *)GetProcAddress(hLibrary, "GetIfTable2");
pGetIfTable2Ex = (void *)GetProcAddress(hLibrary, "GetIfTable2Ex");
- pGetIpForwardTable = (void *)GetProcAddress(hLibrary, "GetIpForwardTable");
- pGetIpNetTable = (void *)GetProcAddress(hLibrary, "GetIpNetTable");
- pGetInterfaceInfo = (void *)GetProcAddress(hLibrary, "GetInterfaceInfo");
- pGetAdaptersInfo = (void *)GetProcAddress(hLibrary, "GetAdaptersInfo");
- pGetNetworkParams = (void *)GetProcAddress(hLibrary, "GetNetworkParams");
- pGetIcmpStatistics = (void *)GetProcAddress(hLibrary, "GetIcmpStatistics");
- pGetIpStatistics = (void *)GetProcAddress(hLibrary, "GetIpStatistics");
- pGetTcpStatistics = (void *)GetProcAddress(hLibrary, "GetTcpStatistics");
- pGetUdpStatistics = (void *)GetProcAddress(hLibrary, "GetUdpStatistics");
- pGetIcmpStatisticsEx = (void *)GetProcAddress(hLibrary, "GetIcmpStatisticsEx");
- pGetIpStatisticsEx = (void *)GetProcAddress(hLibrary, "GetIpStatisticsEx");
- pGetTcpStatisticsEx = (void *)GetProcAddress(hLibrary, "GetTcpStatisticsEx");
- pGetUdpStatisticsEx = (void *)GetProcAddress(hLibrary, "GetUdpStatisticsEx");
- pGetTcpTable = (void *)GetProcAddress(hLibrary, "GetTcpTable");
- pGetUdpTable = (void *)GetProcAddress(hLibrary, "GetUdpTable");
pGetUdp6Table = (void *)GetProcAddress(hLibrary, "GetUdp6Table");
- pGetPerAdapterInfo = (void *)GetProcAddress(hLibrary, "GetPerAdapterInfo");
- pGetAdaptersAddresses = (void *)GetProcAddress(hLibrary, "GetAdaptersAddresses");
pGetUnicastIpAddressEntry = (void *)GetProcAddress(hLibrary, "GetUnicastIpAddressEntry");
pGetUnicastIpAddressTable = (void *)GetProcAddress(hLibrary, "GetUnicastIpAddressTable");
- pNotifyAddrChange = (void *)GetProcAddress(hLibrary, "NotifyAddrChange");
- pCancelIPChangeNotify = (void *)GetProcAddress(hLibrary, "CancelIPChangeNotify");
pGetExtendedTcpTable = (void *)GetProcAddress(hLibrary, "GetExtendedTcpTable");
pGetExtendedUdpTable = (void *)GetProcAddress(hLibrary, "GetExtendedUdpTable");
- pSetTcpEntry = (void *)GetProcAddress(hLibrary, "SetTcpEntry");
- pIcmpCreateFile = (void *)GetProcAddress(hLibrary, "IcmpCreateFile");
- pIcmpSendEcho = (void *)GetProcAddress(hLibrary, "IcmpSendEcho");
pCreateSortedAddressPairs = (void *)GetProcAddress(hLibrary, "CreateSortedAddressPairs");
pFreeMibTable = (void *)GetProcAddress(hLibrary, "FreeMibTable");
pConvertInterfaceGuidToLuid = (void *)GetProcAddress(hLibrary, "ConvertInterfaceGuidToLuid");
@@ -200,37 +147,34 @@ static void testWin98OnlyFunctions(void)
static void testGetNumberOfInterfaces(void)
{
- if (pGetNumberOfInterfaces) {
- DWORD apiReturn, numInterfaces;
+ DWORD apiReturn, numInterfaces;
- /* Crashes on Vista */
- if (0) {
- apiReturn = pGetNumberOfInterfaces(NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED)
- return;
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetNumberOfInterfaces(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- }
-
- apiReturn = pGetNumberOfInterfaces(&numInterfaces);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetNumberOfInterfaces is not supported\n");
+ /* Crashes on Vista */
+ if (0) {
+ apiReturn = GetNumberOfInterfaces(NULL);
+ if (apiReturn == ERROR_NOT_SUPPORTED)
return;
- }
- ok(apiReturn == NO_ERROR,
- "GetNumberOfInterfaces returned %d, expected 0\n", apiReturn);
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetNumberOfInterfaces(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
}
+
+ apiReturn = GetNumberOfInterfaces(&numInterfaces);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetNumberOfInterfaces is not supported\n");
+ return;
+ }
+ ok(apiReturn == NO_ERROR,
+ "GetNumberOfInterfaces returned %d, expected 0\n", apiReturn);
}
static void testGetIfEntry(DWORD index)
{
- if (pGetIfEntry) {
DWORD apiReturn;
MIB_IFROW row;
memset(&row, 0, sizeof(row));
- apiReturn = pGetIfEntry(NULL);
+ apiReturn = GetIfEntry(NULL);
if (apiReturn == ERROR_NOT_SUPPORTED) {
skip("GetIfEntry is not supported\n");
return;
@@ -239,380 +183,363 @@ static void testGetIfEntry(DWORD index)
"GetIfEntry(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
apiReturn);
row.dwIndex = -1; /* hope that's always bogus! */
- apiReturn = pGetIfEntry(&row);
+ apiReturn = GetIfEntry(&row);
ok(apiReturn == ERROR_INVALID_DATA ||
apiReturn == ERROR_FILE_NOT_FOUND /* Vista */,
"GetIfEntry(bogus row) returned %d, expected ERROR_INVALID_DATA or ERROR_FILE_NOT_FOUND\n",
apiReturn);
row.dwIndex = index;
- apiReturn = pGetIfEntry(&row);
+ apiReturn = GetIfEntry(&row);
ok(apiReturn == NO_ERROR,
"GetIfEntry returned %d, expected NO_ERROR\n", apiReturn);
- }
}
static void testGetIpAddrTable(void)
{
- if (pGetIpAddrTable) {
- DWORD apiReturn;
- ULONG dwSize = 0;
+ DWORD apiReturn;
+ ULONG dwSize = 0;
- apiReturn = pGetIpAddrTable(NULL, NULL, FALSE);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetIpAddrTable is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetIpAddrTable(NULL, NULL, FALSE) returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetIpAddrTable(NULL, &dwSize, FALSE);
- ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
- "GetIpAddrTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn = GetIpAddrTable(NULL, NULL, FALSE);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetIpAddrTable is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetIpAddrTable(NULL, NULL, FALSE) returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetIpAddrTable(NULL, &dwSize, FALSE);
+ ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
+ "GetIpAddrTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn);
+ if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
+ PMIB_IPADDRTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
+
+ apiReturn = GetIpAddrTable(buf, &dwSize, FALSE);
+ ok(apiReturn == NO_ERROR,
+ "GetIpAddrTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
apiReturn);
- if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
- PMIB_IPADDRTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
-
- apiReturn = pGetIpAddrTable(buf, &dwSize, FALSE);
- ok(apiReturn == NO_ERROR,
- "GetIpAddrTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
- apiReturn);
- if (apiReturn == NO_ERROR && buf->dwNumEntries)
+ if (apiReturn == NO_ERROR && buf->dwNumEntries)
+ {
+ int i;
+ testGetIfEntry(buf->table[0].dwIndex);
+ for (i = 0; i < buf->dwNumEntries; i++)
{
- int i;
- testGetIfEntry(buf->table[0].dwIndex);
- for (i = 0; i < buf->dwNumEntries; i++)
- {
- ok (buf->table[i].wType != 0, "Test[%d]: expected wType > 0\n", i);
- trace("Entry[%d]: addr %s, dwIndex %u, wType 0x%x\n", i,
- ntoa(buf->table[i].dwAddr), buf->table[i].dwIndex, buf->table[i].wType);
- }
+ ok (buf->table[i].wType != 0, "Test[%d]: expected wType > 0\n", i);
+ trace("Entry[%d]: addr %s, dwIndex %u, wType 0x%x\n", i,
+ ntoa(buf->table[i].dwAddr), buf->table[i].dwIndex, buf->table[i].wType);
}
- HeapFree(GetProcessHeap(), 0, buf);
}
+ HeapFree(GetProcessHeap(), 0, buf);
}
}
static void testGetIfTable(void)
{
- if (pGetIfTable) {
- DWORD apiReturn;
- ULONG dwSize = 0;
+ DWORD apiReturn;
+ ULONG dwSize = 0;
- apiReturn = pGetIfTable(NULL, NULL, FALSE);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetIfTable is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetIfTable(NULL, NULL, FALSE) returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetIfTable(NULL, &dwSize, FALSE);
- ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
- "GetIfTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn = GetIfTable(NULL, NULL, FALSE);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetIfTable is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetIfTable(NULL, NULL, FALSE) returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetIfTable(NULL, &dwSize, FALSE);
+ ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
+ "GetIfTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn);
+ if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
+ PMIB_IFTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
+
+ apiReturn = GetIfTable(buf, &dwSize, FALSE);
+ ok(apiReturn == NO_ERROR,
+ "GetIfTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n\n",
apiReturn);
- if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
- PMIB_IFTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
- apiReturn = pGetIfTable(buf, &dwSize, FALSE);
- ok(apiReturn == NO_ERROR,
- "GetIfTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n\n",
- apiReturn);
+ if (apiReturn == NO_ERROR && winetest_debug > 1)
+ {
+ DWORD i, j;
+ char name[MAX_INTERFACE_NAME_LEN];
- if (apiReturn == NO_ERROR && winetest_debug > 1)
- {
- DWORD i, j;
- char name[MAX_INTERFACE_NAME_LEN];
-
- trace( "interface table: %u entries\n", buf->dwNumEntries );
- for (i = 0; i < buf->dwNumEntries; i++)
- {
- MIB_IFROW *row = &buf->table[i];
- WideCharToMultiByte( CP_ACP, 0, row->wszName, -1, name, MAX_INTERFACE_NAME_LEN, NULL, NULL );
- trace( "%u: '%s' type %u mtu %u speed %u phys",
- row->dwIndex, name, row->dwType, row->dwMtu, row->dwSpeed );
- for (j = 0; j < row->dwPhysAddrLen; j++)
- printf( " %02x", row->bPhysAddr[j] );
- printf( "\n" );
- trace( " in: bytes %u upkts %u nupkts %u disc %u err %u unk %u\n",
- row->dwInOctets, row->dwInUcastPkts, row->dwInNUcastPkts,
- row->dwInDiscards, row->dwInErrors, row->dwInUnknownProtos );
- trace( " out: bytes %u upkts %u nupkts %u disc %u err %u\n",
- row->dwOutOctets, row->dwOutUcastPkts, row->dwOutNUcastPkts,
- row->dwOutDiscards, row->dwOutErrors );
- }
- }
- HeapFree(GetProcessHeap(), 0, buf);
+ trace( "interface table: %u entries\n", buf->dwNumEntries );
+ for (i = 0; i < buf->dwNumEntries; i++)
+ {
+ MIB_IFROW *row = &buf->table[i];
+ WideCharToMultiByte( CP_ACP, 0, row->wszName, -1, name, MAX_INTERFACE_NAME_LEN, NULL, NULL );
+ trace( "%u: '%s' type %u mtu %u speed %u phys",
+ row->dwIndex, name, row->dwType, row->dwMtu, row->dwSpeed );
+ for (j = 0; j < row->dwPhysAddrLen; j++)
+ printf( " %02x", row->bPhysAddr[j] );
+ printf( "\n" );
+ trace( " in: bytes %u upkts %u nupkts %u disc %u err %u unk %u\n",
+ row->dwInOctets, row->dwInUcastPkts, row->dwInNUcastPkts,
+ row->dwInDiscards, row->dwInErrors, row->dwInUnknownProtos );
+ trace( " out: bytes %u upkts %u nupkts %u disc %u err %u\n",
+ row->dwOutOctets, row->dwOutUcastPkts, row->dwOutNUcastPkts,
+ row->dwOutDiscards, row->dwOutErrors );
+ }
}
+ HeapFree(GetProcessHeap(), 0, buf);
}
}
static void testGetIpForwardTable(void)
{
- if (pGetIpForwardTable) {
- DWORD apiReturn;
- ULONG dwSize = 0;
+ DWORD apiReturn;
+ ULONG dwSize = 0;
- apiReturn = pGetIpForwardTable(NULL, NULL, FALSE);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetIpForwardTable is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetIpForwardTable(NULL, NULL, FALSE) returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetIpForwardTable(NULL, &dwSize, FALSE);
- ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
- "GetIpForwardTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
- apiReturn);
- if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
- PMIB_IPFORWARDTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
+ apiReturn = GetIpForwardTable(NULL, NULL, FALSE);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetIpForwardTable is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetIpForwardTable(NULL, NULL, FALSE) returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetIpForwardTable(NULL, &dwSize, FALSE);
+ ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
+ "GetIpForwardTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn);
+ if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
+ PMIB_IPFORWARDTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
- apiReturn = pGetIpForwardTable(buf, &dwSize, FALSE);
- ok(apiReturn == NO_ERROR,
- "GetIpForwardTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
- apiReturn);
+ apiReturn = GetIpForwardTable(buf, &dwSize, FALSE);
+ ok(apiReturn == NO_ERROR,
+ "GetIpForwardTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
+ apiReturn);
- if (apiReturn == NO_ERROR)
- {
- DWORD i;
+ if (apiReturn == NO_ERROR)
+ {
+ DWORD i;
- trace( "IP forward table: %u entries\n", buf->dwNumEntries );
- for (i = 0; i < buf->dwNumEntries; i++)
- {
- if (!U1(buf->table[i]).dwForwardDest) /* Default route */
- {
+ trace( "IP forward table: %u entries\n", buf->dwNumEntries );
+ for (i = 0; i < buf->dwNumEntries; i++)
+ {
+ if (!U1(buf->table[i]).dwForwardDest) /* Default route */
+ {
todo_wine
- ok (U1(buf->table[i]).dwForwardProto == MIB_IPPROTO_NETMGMT,
- "Unexpected dwForwardProto %d\n", U1(buf->table[i]).dwForwardProto);
- ok (U1(buf->table[i]).dwForwardType == MIB_IPROUTE_TYPE_INDIRECT,
- "Unexpected dwForwardType %d\n", U1(buf->table[i]).dwForwardType);
- }
- else
- {
- /* In general we should get MIB_IPPROTO_LOCAL but does not work
- * for Vista, 2008 and 7. */
- ok (U1(buf->table[i]).dwForwardProto == MIB_IPPROTO_LOCAL ||
- broken(U1(buf->table[i]).dwForwardProto == MIB_IPPROTO_NETMGMT),
- "Unexpected dwForwardProto %d\n", U1(buf->table[i]).dwForwardProto);
- /* The forward type varies depending on the address and gateway
- * value so it is not worth testing in this case. */
- }
-
- trace( "%u: dest %s mask %s gw %s if %u type %u proto %u\n", i,
- ntoa( buf->table[i].dwForwardDest ), ntoa( buf->table[i].dwForwardMask ),
- ntoa( buf->table[i].dwForwardNextHop ), buf->table[i].dwForwardIfIndex,
- U1(buf->table[i]).dwForwardType, U1(buf->table[i]).dwForwardProto );
- }
- }
- HeapFree(GetProcessHeap(), 0, buf);
+ ok (U1(buf->table[i]).dwForwardProto == MIB_IPPROTO_NETMGMT,
+ "Unexpected dwForwardProto %d\n", U1(buf->table[i]).dwForwardProto);
+ ok (U1(buf->table[i]).dwForwardType == MIB_IPROUTE_TYPE_INDIRECT,
+ "Unexpected dwForwardType %d\n", U1(buf->table[i]).dwForwardType);
+ }
+ else
+ {
+ /* In general we should get MIB_IPPROTO_LOCAL but does not work
+ * for Vista, 2008 and 7. */
+ ok (U1(buf->table[i]).dwForwardProto == MIB_IPPROTO_LOCAL ||
+ broken(U1(buf->table[i]).dwForwardProto == MIB_IPPROTO_NETMGMT),
+ "Unexpected dwForwardProto %d\n", U1(buf->table[i]).dwForwardProto);
+ /* The forward type varies depending on the address and gateway
+ * value so it is not worth testing in this case. */
+ }
+
+ trace( "%u: dest %s mask %s gw %s if %u type %u proto %u\n", i,
+ ntoa( buf->table[i].dwForwardDest ), ntoa( buf->table[i].dwForwardMask ),
+ ntoa( buf->table[i].dwForwardNextHop ), buf->table[i].dwForwardIfIndex,
+ U1(buf->table[i]).dwForwardType, U1(buf->table[i]).dwForwardProto );
+ }
}
+ HeapFree(GetProcessHeap(), 0, buf);
}
}
static void testGetIpNetTable(void)
{
- if (pGetIpNetTable) {
- DWORD apiReturn;
- ULONG dwSize = 0;
+ DWORD apiReturn;
+ ULONG dwSize = 0;
- apiReturn = pGetIpNetTable(NULL, NULL, FALSE);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetIpNetTable is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetIpNetTable(NULL, NULL, FALSE) returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetIpNetTable(NULL, &dwSize, FALSE);
- ok(apiReturn == ERROR_NO_DATA || apiReturn == ERROR_INSUFFICIENT_BUFFER,
- "GetIpNetTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_NO_DATA or ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn = GetIpNetTable(NULL, NULL, FALSE);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetIpNetTable is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetIpNetTable(NULL, NULL, FALSE) returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetIpNetTable(NULL, &dwSize, FALSE);
+ ok(apiReturn == ERROR_NO_DATA || apiReturn == ERROR_INSUFFICIENT_BUFFER,
+ "GetIpNetTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_NO_DATA or ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn);
+ if (apiReturn == ERROR_NO_DATA)
+ ; /* empty ARP table's okay */
+ else if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
+ PMIB_IPNETTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
+
+ apiReturn = GetIpNetTable(buf, &dwSize, FALSE);
+ ok(apiReturn == NO_ERROR ||
+ apiReturn == ERROR_NO_DATA, /* empty ARP table's okay */
+ "GetIpNetTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
apiReturn);
- if (apiReturn == ERROR_NO_DATA)
- ; /* empty ARP table's okay */
- else if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
- PMIB_IPNETTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
-
- apiReturn = pGetIpNetTable(buf, &dwSize, FALSE);
- ok(apiReturn == NO_ERROR ||
- apiReturn == ERROR_NO_DATA, /* empty ARP table's okay */
- "GetIpNetTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
- apiReturn);
-
- if (apiReturn == NO_ERROR && winetest_debug > 1)
- {
- DWORD i, j;
-
- trace( "IP net table: %u entries\n", buf->dwNumEntries );
- for (i = 0; i < buf->dwNumEntries; i++)
- {
- trace( "%u: idx %u type %u addr %s phys",
- i, buf->table[i].dwIndex, U(buf->table[i]).dwType, ntoa( buf->table[i].dwAddr ));
- for (j = 0; j < buf->table[i].dwPhysAddrLen; j++)
- printf( " %02x", buf->table[i].bPhysAddr[j] );
- printf( "\n" );
- }
- }
- HeapFree(GetProcessHeap(), 0, buf);
+
+ if (apiReturn == NO_ERROR && winetest_debug > 1)
+ {
+ DWORD i, j;
+
+ trace( "IP net table: %u entries\n", buf->dwNumEntries );
+ for (i = 0; i < buf->dwNumEntries; i++)
+ {
+ trace( "%u: idx %u type %u addr %s phys",
+ i, buf->table[i].dwIndex, U(buf->table[i]).dwType, ntoa( buf->table[i].dwAddr ));
+ for (j = 0; j < buf->table[i].dwPhysAddrLen; j++)
+ printf( " %02x", buf->table[i].bPhysAddr[j] );
+ printf( "\n" );
+ }
}
+ HeapFree(GetProcessHeap(), 0, buf);
}
}
static void testGetIcmpStatistics(void)
{
- if (pGetIcmpStatistics) {
- DWORD apiReturn;
- MIB_ICMP stats;
-
- /* Crashes on Vista */
- if (0) {
- apiReturn = pGetIcmpStatistics(NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED)
- return;
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetIcmpStatistics(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- }
+ DWORD apiReturn;
+ MIB_ICMP stats;
- apiReturn = pGetIcmpStatistics(&stats);
+ /* Crashes on Vista */
+ if (0) {
+ apiReturn = GetIcmpStatistics(NULL);
if (apiReturn == ERROR_NOT_SUPPORTED)
- {
- skip("GetIcmpStatistics is not supported\n");
return;
- }
- ok(apiReturn == NO_ERROR,
- "GetIcmpStatistics returned %d, expected NO_ERROR\n", apiReturn);
- if (apiReturn == NO_ERROR && winetest_debug > 1)
- {
- trace( "ICMP stats: %8s %8s\n", "in", "out" );
- trace( " dwMsgs: %8u %8u\n", stats.stats.icmpInStats.dwMsgs, stats.stats.icmpOutStats.dwMsgs );
- trace( " dwErrors: %8u %8u\n", stats.stats.icmpInStats.dwErrors, stats.stats.icmpOutStats.dwErrors );
- trace( " dwDestUnreachs: %8u %8u\n", stats.stats.icmpInStats.dwDestUnreachs, stats.stats.icmpOutStats.dwDestUnreachs );
- trace( " dwTimeExcds: %8u %8u\n", stats.stats.icmpInStats.dwTimeExcds, stats.stats.icmpOutStats.dwTimeExcds );
- trace( " dwParmProbs: %8u %8u\n", stats.stats.icmpInStats.dwParmProbs, stats.stats.icmpOutStats.dwParmProbs );
- trace( " dwSrcQuenchs: %8u %8u\n", stats.stats.icmpInStats.dwSrcQuenchs, stats.stats.icmpOutStats.dwSrcQuenchs );
- trace( " dwRedirects: %8u %8u\n", stats.stats.icmpInStats.dwRedirects, stats.stats.icmpOutStats.dwRedirects );
- trace( " dwEchos: %8u %8u\n", stats.stats.icmpInStats.dwEchos, stats.stats.icmpOutStats.dwEchos );
- trace( " dwEchoReps: %8u %8u\n", stats.stats.icmpInStats.dwEchoReps, stats.stats.icmpOutStats.dwEchoReps );
- trace( " dwTimestamps: %8u %8u\n", stats.stats.icmpInStats.dwTimestamps, stats.stats.icmpOutStats.dwTimestamps );
- trace( " dwTimestampReps: %8u %8u\n", stats.stats.icmpInStats.dwTimestampReps, stats.stats.icmpOutStats.dwTimestampReps );
- trace( " dwAddrMasks: %8u %8u\n", stats.stats.icmpInStats.dwAddrMasks, stats.stats.icmpOutStats.dwAddrMasks );
- trace( " dwAddrMaskReps: %8u %8u\n", stats.stats.icmpInStats.dwAddrMaskReps, stats.stats.icmpOutStats.dwAddrMaskReps );
- }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetIcmpStatistics(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ }
+
+ apiReturn = GetIcmpStatistics(&stats);
+ if (apiReturn == ERROR_NOT_SUPPORTED)
+ {
+ skip("GetIcmpStatistics is not supported\n");
+ return;
+ }
+ ok(apiReturn == NO_ERROR,
+ "GetIcmpStatistics returned %d, expected NO_ERROR\n", apiReturn);
+ if (apiReturn == NO_ERROR && winetest_debug > 1)
+ {
+ trace( "ICMP stats: %8s %8s\n", "in", "out" );
+ trace( " dwMsgs: %8u %8u\n", stats.stats.icmpInStats.dwMsgs, stats.stats.icmpOutStats.dwMsgs );
+ trace( " dwErrors: %8u %8u\n", stats.stats.icmpInStats.dwErrors, stats.stats.icmpOutStats.dwErrors );
+ trace( " dwDestUnreachs: %8u %8u\n", stats.stats.icmpInStats.dwDestUnreachs, stats.stats.icmpOutStats.dwDestUnreachs );
+ trace( " dwTimeExcds: %8u %8u\n", stats.stats.icmpInStats.dwTimeExcds, stats.stats.icmpOutStats.dwTimeExcds );
+ trace( " dwParmProbs: %8u %8u\n", stats.stats.icmpInStats.dwParmProbs, stats.stats.icmpOutStats.dwParmProbs );
+ trace( " dwSrcQuenchs: %8u %8u\n", stats.stats.icmpInStats.dwSrcQuenchs, stats.stats.icmpOutStats.dwSrcQuenchs );
+ trace( " dwRedirects: %8u %8u\n", stats.stats.icmpInStats.dwRedirects, stats.stats.icmpOutStats.dwRedirects );
+ trace( " dwEchos: %8u %8u\n", stats.stats.icmpInStats.dwEchos, stats.stats.icmpOutStats.dwEchos );
+ trace( " dwEchoReps: %8u %8u\n", stats.stats.icmpInStats.dwEchoReps, stats.stats.icmpOutStats.dwEchoReps );
+ trace( " dwTimestamps: %8u %8u\n", stats.stats.icmpInStats.dwTimestamps, stats.stats.icmpOutStats.dwTimestamps );
+ trace( " dwTimestampReps: %8u %8u\n", stats.stats.icmpInStats.dwTimestampReps, stats.stats.icmpOutStats.dwTimestampReps );
+ trace( " dwAddrMasks: %8u %8u\n", stats.stats.icmpInStats.dwAddrMasks, stats.stats.icmpOutStats.dwAddrMasks );
+ trace( " dwAddrMaskReps: %8u %8u\n", stats.stats.icmpInStats.dwAddrMaskReps, stats.stats.icmpOutStats.dwAddrMaskReps );
}
}
static void testGetIpStatistics(void)
{
- if (pGetIpStatistics) {
- DWORD apiReturn;
- MIB_IPSTATS stats;
+ DWORD apiReturn;
+ MIB_IPSTATS stats;
- apiReturn = pGetIpStatistics(NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetIpStatistics is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetIpStatistics(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetIpStatistics(&stats);
- ok(apiReturn == NO_ERROR,
- "GetIpStatistics returned %d, expected NO_ERROR\n", apiReturn);
- if (apiReturn == NO_ERROR && winetest_debug > 1)
- {
- trace( "IP stats:\n" );
- trace( " dwForwarding: %u\n", U(stats).dwForwarding );
- trace( " dwDefaultTTL: %u\n", stats.dwDefaultTTL );
- trace( " dwInReceives: %u\n", stats.dwInReceives );
- trace( " dwInHdrErrors: %u\n", stats.dwInHdrErrors );
- trace( " dwInAddrErrors: %u\n", stats.dwInAddrErrors );
- trace( " dwForwDatagrams: %u\n", stats.dwForwDatagrams );
- trace( " dwInUnknownProtos: %u\n", stats.dwInUnknownProtos );
- trace( " dwInDiscards: %u\n", stats.dwInDiscards );
- trace( " dwInDelivers: %u\n", stats.dwInDelivers );
- trace( " dwOutRequests: %u\n", stats.dwOutRequests );
- trace( " dwRoutingDiscards: %u\n", stats.dwRoutingDiscards );
- trace( " dwOutDiscards: %u\n", stats.dwOutDiscards );
- trace( " dwOutNoRoutes: %u\n", stats.dwOutNoRoutes );
- trace( " dwReasmTimeout: %u\n", stats.dwReasmTimeout );
- trace( " dwReasmReqds: %u\n", stats.dwReasmReqds );
- trace( " dwReasmOks: %u\n", stats.dwReasmOks );
- trace( " dwReasmFails: %u\n", stats.dwReasmFails );
- trace( " dwFragOks: %u\n", stats.dwFragOks );
- trace( " dwFragFails: %u\n", stats.dwFragFails );
- trace( " dwFragCreates: %u\n", stats.dwFragCreates );
- trace( " dwNumIf: %u\n", stats.dwNumIf );
- trace( " dwNumAddr: %u\n", stats.dwNumAddr );
- trace( " dwNumRoutes: %u\n", stats.dwNumRoutes );
- }
+ apiReturn = GetIpStatistics(NULL);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetIpStatistics is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetIpStatistics(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetIpStatistics(&stats);
+ ok(apiReturn == NO_ERROR,
+ "GetIpStatistics returned %d, expected NO_ERROR\n", apiReturn);
+ if (apiReturn == NO_ERROR && winetest_debug > 1)
+ {
+ trace( "IP stats:\n" );
+ trace( " dwForwarding: %u\n", U(stats).dwForwarding );
+ trace( " dwDefaultTTL: %u\n", stats.dwDefaultTTL );
+ trace( " dwInReceives: %u\n", stats.dwInReceives );
+ trace( " dwInHdrErrors: %u\n", stats.dwInHdrErrors );
+ trace( " dwInAddrErrors: %u\n", stats.dwInAddrErrors );
+ trace( " dwForwDatagrams: %u\n", stats.dwForwDatagrams );
+ trace( " dwInUnknownProtos: %u\n", stats.dwInUnknownProtos );
+ trace( " dwInDiscards: %u\n", stats.dwInDiscards );
+ trace( " dwInDelivers: %u\n", stats.dwInDelivers );
+ trace( " dwOutRequests: %u\n", stats.dwOutRequests );
+ trace( " dwRoutingDiscards: %u\n", stats.dwRoutingDiscards );
+ trace( " dwOutDiscards: %u\n", stats.dwOutDiscards );
+ trace( " dwOutNoRoutes: %u\n", stats.dwOutNoRoutes );
+ trace( " dwReasmTimeout: %u\n", stats.dwReasmTimeout );
+ trace( " dwReasmReqds: %u\n", stats.dwReasmReqds );
+ trace( " dwReasmOks: %u\n", stats.dwReasmOks );
+ trace( " dwReasmFails: %u\n", stats.dwReasmFails );
+ trace( " dwFragOks: %u\n", stats.dwFragOks );
+ trace( " dwFragFails: %u\n", stats.dwFragFails );
+ trace( " dwFragCreates: %u\n", stats.dwFragCreates );
+ trace( " dwNumIf: %u\n", stats.dwNumIf );
+ trace( " dwNumAddr: %u\n", stats.dwNumAddr );
+ trace( " dwNumRoutes: %u\n", stats.dwNumRoutes );
}
}
static void testGetTcpStatistics(void)
{
- if (pGetTcpStatistics) {
- DWORD apiReturn;
- MIB_TCPSTATS stats;
+ DWORD apiReturn;
+ MIB_TCPSTATS stats;
- apiReturn = pGetTcpStatistics(NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetTcpStatistics is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetTcpStatistics(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetTcpStatistics(&stats);
- ok(apiReturn == NO_ERROR,
- "GetTcpStatistics returned %d, expected NO_ERROR\n", apiReturn);
- if (apiReturn == NO_ERROR && winetest_debug > 1)
- {
- trace( "TCP stats:\n" );
- trace( " dwRtoAlgorithm: %u\n", U(stats).dwRtoAlgorithm );
- trace( " dwRtoMin: %u\n", stats.dwRtoMin );
- trace( " dwRtoMax: %u\n", stats.dwRtoMax );
- trace( " dwMaxConn: %u\n", stats.dwMaxConn );
- trace( " dwActiveOpens: %u\n", stats.dwActiveOpens );
- trace( " dwPassiveOpens: %u\n", stats.dwPassiveOpens );
- trace( " dwAttemptFails: %u\n", stats.dwAttemptFails );
- trace( " dwEstabResets: %u\n", stats.dwEstabResets );
- trace( " dwCurrEstab: %u\n", stats.dwCurrEstab );
- trace( " dwInSegs: %u\n", stats.dwInSegs );
- trace( " dwOutSegs: %u\n", stats.dwOutSegs );
- trace( " dwRetransSegs: %u\n", stats.dwRetransSegs );
- trace( " dwInErrs: %u\n", stats.dwInErrs );
- trace( " dwOutRsts: %u\n", stats.dwOutRsts );
- trace( " dwNumConns: %u\n", stats.dwNumConns );
- }
+ apiReturn = GetTcpStatistics(NULL);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetTcpStatistics is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetTcpStatistics(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetTcpStatistics(&stats);
+ ok(apiReturn == NO_ERROR,
+ "GetTcpStatistics returned %d, expected NO_ERROR\n", apiReturn);
+ if (apiReturn == NO_ERROR && winetest_debug > 1)
+ {
+ trace( "TCP stats:\n" );
+ trace( " dwRtoAlgorithm: %u\n", U(stats).dwRtoAlgorithm );
+ trace( " dwRtoMin: %u\n", stats.dwRtoMin );
+ trace( " dwRtoMax: %u\n", stats.dwRtoMax );
+ trace( " dwMaxConn: %u\n", stats.dwMaxConn );
+ trace( " dwActiveOpens: %u\n", stats.dwActiveOpens );
+ trace( " dwPassiveOpens: %u\n", stats.dwPassiveOpens );
+ trace( " dwAttemptFails: %u\n", stats.dwAttemptFails );
+ trace( " dwEstabResets: %u\n", stats.dwEstabResets );
+ trace( " dwCurrEstab: %u\n", stats.dwCurrEstab );
+ trace( " dwInSegs: %u\n", stats.dwInSegs );
+ trace( " dwOutSegs: %u\n", stats.dwOutSegs );
+ trace( " dwRetransSegs: %u\n", stats.dwRetransSegs );
+ trace( " dwInErrs: %u\n", stats.dwInErrs );
+ trace( " dwOutRsts: %u\n", stats.dwOutRsts );
+ trace( " dwNumConns: %u\n", stats.dwNumConns );
}
}
static void testGetUdpStatistics(void)
{
- if (pGetUdpStatistics) {
- DWORD apiReturn;
- MIB_UDPSTATS stats;
+ DWORD apiReturn;
+ MIB_UDPSTATS stats;
- apiReturn = pGetUdpStatistics(NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetUdpStatistics is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetUdpStatistics(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetUdpStatistics(&stats);
- ok(apiReturn == NO_ERROR,
- "GetUdpStatistics returned %d, expected NO_ERROR\n", apiReturn);
- if (apiReturn == NO_ERROR && winetest_debug > 1)
- {
- trace( "UDP stats:\n" );
- trace( " dwInDatagrams: %u\n", stats.dwInDatagrams );
- trace( " dwNoPorts: %u\n", stats.dwNoPorts );
- trace( " dwInErrors: %u\n", stats.dwInErrors );
- trace( " dwOutDatagrams: %u\n", stats.dwOutDatagrams );
- trace( " dwNumAddrs: %u\n", stats.dwNumAddrs );
- }
+ apiReturn = GetUdpStatistics(NULL);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetUdpStatistics is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetUdpStatistics(NULL) returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetUdpStatistics(&stats);
+ ok(apiReturn == NO_ERROR,
+ "GetUdpStatistics returned %d, expected NO_ERROR\n", apiReturn);
+ if (apiReturn == NO_ERROR && winetest_debug > 1)
+ {
+ trace( "UDP stats:\n" );
+ trace( " dwInDatagrams: %u\n", stats.dwInDatagrams );
+ trace( " dwNoPorts: %u\n", stats.dwNoPorts );
+ trace( " dwInErrors: %u\n", stats.dwInErrors );
+ trace( " dwOutDatagrams: %u\n", stats.dwOutDatagrams );
+ trace( " dwNumAddrs: %u\n", stats.dwNumAddrs );
}
}
@@ -621,24 +548,18 @@ static void testGetIcmpStatisticsEx(void)
DWORD apiReturn;
MIB_ICMP_EX stats;
- if (!pGetIcmpStatisticsEx)
- {
- win_skip( "GetIcmpStatisticsEx not available\n" );
- return;
- }
-
/* Crashes on Vista */
if (1) {
- apiReturn = pGetIcmpStatisticsEx(NULL, AF_INET);
+ apiReturn = GetIcmpStatisticsEx(NULL, AF_INET);
ok(apiReturn == ERROR_INVALID_PARAMETER,
"GetIcmpStatisticsEx(NULL, AF_INET) returned %d, expected ERROR_INVALID_PARAMETER\n", apiReturn);
}
- apiReturn = pGetIcmpStatisticsEx(&stats, AF_BAN);
+ apiReturn = GetIcmpStatisticsEx(&stats, AF_BAN);
ok(apiReturn == ERROR_INVALID_PARAMETER,
"GetIcmpStatisticsEx(&stats, AF_BAN) returned %d, expected ERROR_INVALID_PARAMETER\n", apiReturn);
- apiReturn = pGetIcmpStatisticsEx(&stats, AF_INET);
+ apiReturn = GetIcmpStatisticsEx(&stats, AF_INET);
ok(apiReturn == NO_ERROR, "GetIcmpStatisticsEx returned %d, expected NO_ERROR\n", apiReturn);
if (apiReturn == NO_ERROR && winetest_debug > 1)
{
@@ -650,7 +571,7 @@ static void testGetIcmpStatisticsEx(void)
trace( " rgdwTypeCount[%3i]: %8u %8u\n", i, stats.icmpInStats.rgdwTypeCount[i], stats.icmpOutStats.rgdwTypeCount[i] );
}
- apiReturn = pGetIcmpStatisticsEx(&stats, AF_INET6);
+ apiReturn = GetIcmpStatisticsEx(&stats, AF_INET6);
ok(apiReturn == NO_ERROR || broken(apiReturn == ERROR_NOT_SUPPORTED),
"GetIcmpStatisticsEx returned %d, expected NO_ERROR\n", apiReturn);
if (apiReturn == NO_ERROR && winetest_debug > 1)
@@ -669,21 +590,15 @@ static void testGetIpStatisticsEx(void)
DWORD apiReturn;
MIB_IPSTATS stats;
- if (!pGetIpStatisticsEx)
- {
- win_skip( "GetIpStatisticsEx not available\n" );
- return;
- }
-
- apiReturn = pGetIpStatisticsEx(NULL, AF_INET);
+ apiReturn = GetIpStatisticsEx(NULL, AF_INET);
ok(apiReturn == ERROR_INVALID_PARAMETER,
"GetIpStatisticsEx(NULL, AF_INET) returned %d, expected ERROR_INVALID_PARAMETER\n", apiReturn);
- apiReturn = pGetIpStatisticsEx(&stats, AF_BAN);
+ apiReturn = GetIpStatisticsEx(&stats, AF_BAN);
ok(apiReturn == ERROR_INVALID_PARAMETER,
"GetIpStatisticsEx(&stats, AF_BAN) returned %d, expected ERROR_INVALID_PARAMETER\n", apiReturn);
- apiReturn = pGetIpStatisticsEx(&stats, AF_INET);
+ apiReturn = GetIpStatisticsEx(&stats, AF_INET);
ok(apiReturn == NO_ERROR, "GetIpStatisticsEx returned %d, expected NO_ERROR\n", apiReturn);
if (apiReturn == NO_ERROR && winetest_debug > 1)
{
@@ -713,7 +628,7 @@ static void testGetIpStatisticsEx(void)
trace( " dwNumRoutes: %u\n", stats.dwNumRoutes );
}
- apiReturn = pGetIpStatisticsEx(&stats, AF_INET6);
+ apiReturn = GetIpStatisticsEx(&stats, AF_INET6);
ok(apiReturn == NO_ERROR || broken(apiReturn == ERROR_NOT_SUPPORTED),
"GetIpStatisticsEx returned %d, expected NO_ERROR\n", apiReturn);
if (apiReturn == NO_ERROR && winetest_debug > 1)
@@ -750,21 +665,15 @@ static void testGetTcpStatisticsEx(void)
DWORD apiReturn;
MIB_TCPSTATS stats;
- if (!pGetTcpStatisticsEx)
- {
- win_skip( "GetTcpStatisticsEx not available\n" );
- return;
- }
-
- apiReturn = pGetTcpStatisticsEx(NULL, AF_INET);
+ apiReturn = GetTcpStatisticsEx(NULL, AF_INET);
ok(apiReturn == ERROR_INVALID_PARAMETER,
"GetTcpStatisticsEx(NULL, AF_INET); returned %d, expected ERROR_INVALID_PARAMETER\n", apiReturn);
- apiReturn = pGetTcpStatisticsEx(&stats, AF_BAN);
+ apiReturn = GetTcpStatisticsEx(&stats, AF_BAN);
ok(apiReturn == ERROR_INVALID_PARAMETER || apiReturn == ERROR_NOT_SUPPORTED,
"GetTcpStatisticsEx(&stats, AF_BAN) returned %d, expected ERROR_INVALID_PARAMETER\n", apiReturn);
- apiReturn = pGetTcpStatisticsEx(&stats, AF_INET);
+ apiReturn = GetTcpStatisticsEx(&stats, AF_INET);
ok(apiReturn == NO_ERROR, "GetTcpStatisticsEx returned %d, expected NO_ERROR\n", apiReturn);
if (apiReturn == NO_ERROR && winetest_debug > 1)
{
@@ -786,7 +695,7 @@ static void testGetTcpStatisticsEx(void)
trace( " dwNumConns: %u\n", stats.dwNumConns );
}
- apiReturn = pGetTcpStatisticsEx(&stats, AF_INET6);
+ apiReturn = GetTcpStatisticsEx(&stats, AF_INET6);
todo_wine ok(apiReturn == NO_ERROR || broken(apiReturn == ERROR_NOT_SUPPORTED),
"GetTcpStatisticsEx returned %d, expected NO_ERROR\n", apiReturn);
if (apiReturn == NO_ERROR && winetest_debug > 1)
@@ -815,21 +724,15 @@ static void testGetUdpStatisticsEx(void)
DWORD apiReturn;
MIB_UDPSTATS stats;
- if (!pGetUdpStatisticsEx)
- {
- win_skip( "GetUdpStatisticsEx not available\n" );
- return;
- }
-
- apiReturn = pGetUdpStatisticsEx(NULL, AF_INET);
+ apiReturn = GetUdpStatisticsEx(NULL, AF_INET);
ok(apiReturn == ERROR_INVALID_PARAMETER,
"GetUdpStatisticsEx(NULL, AF_INET); returned %d, expected ERROR_INVALID_PARAMETER\n", apiReturn);
- apiReturn = pGetUdpStatisticsEx(&stats, AF_BAN);
+ apiReturn = GetUdpStatisticsEx(&stats, AF_BAN);
ok(apiReturn == ERROR_INVALID_PARAMETER || apiReturn == ERROR_NOT_SUPPORTED,
"GetUdpStatisticsEx(&stats, AF_BAN) returned %d, expected ERROR_INVALID_PARAMETER\n", apiReturn);
- apiReturn = pGetUdpStatisticsEx(&stats, AF_INET);
+ apiReturn = GetUdpStatisticsEx(&stats, AF_INET);
ok(apiReturn == NO_ERROR, "GetUdpStatisticsEx returned %d, expected NO_ERROR\n", apiReturn);
if (apiReturn == NO_ERROR && winetest_debug > 1)
{
@@ -841,7 +744,7 @@ static void testGetUdpStatisticsEx(void)
trace( " dwNumAddrs: %u\n", stats.dwNumAddrs );
}
- apiReturn = pGetUdpStatisticsEx(&stats, AF_INET6);
+ apiReturn = GetUdpStatisticsEx(&stats, AF_INET6);
ok(apiReturn == NO_ERROR || broken(apiReturn == ERROR_NOT_SUPPORTED),
"GetUdpStatisticsEx returned %d, expected NO_ERROR\n", apiReturn);
if (apiReturn == NO_ERROR && winetest_debug > 1)
@@ -857,76 +760,71 @@ static void testGetUdpStatisticsEx(void)
static void testGetTcpTable(void)
{
- if (pGetTcpTable) {
- DWORD apiReturn;
- ULONG dwSize = 0;
+ DWORD apiReturn;
+ ULONG dwSize = 0;
- apiReturn = pGetTcpTable(NULL, &dwSize, FALSE);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetTcpTable is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INSUFFICIENT_BUFFER ||
- broken(apiReturn == ERROR_NO_DATA), /* win95 */
- "GetTcpTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
- apiReturn);
- if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
- PMIB_TCPTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
+ apiReturn = GetTcpTable(NULL, &dwSize, FALSE);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetTcpTable is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
+ "GetTcpTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn);
+ if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
+ PMIB_TCPTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
- apiReturn = pGetTcpTable(buf, &dwSize, FALSE);
- ok(apiReturn == NO_ERROR,
- "GetTcpTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
- apiReturn);
+ apiReturn = GetTcpTable(buf, &dwSize, FALSE);
+ ok(apiReturn == NO_ERROR,
+ "GetTcpTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
+ apiReturn);
- if (apiReturn == NO_ERROR && winetest_debug > 1)
- {
- DWORD i;
- trace( "TCP table: %u entries\n", buf->dwNumEntries );
- for (i = 0; i < buf->dwNumEntries; i++)
- {
- trace( "%u: local %s:%u remote %s:%u state %u\n", i,
- ntoa(buf->table[i].dwLocalAddr), ntohs(buf->table[i].dwLocalPort),
- ntoa(buf->table[i].dwRemoteAddr), ntohs(buf->table[i].dwRemotePort),
- U(buf->table[i]).dwState );
- }
- }
- HeapFree(GetProcessHeap(), 0, buf);
+ if (apiReturn == NO_ERROR && winetest_debug > 1)
+ {
+ DWORD i;
+ trace( "TCP table: %u entries\n", buf->dwNumEntries );
+ for (i = 0; i < buf->dwNumEntries; i++)
+ {
+ trace( "%u: local %s:%u remote %s:%u state %u\n", i,
+ ntoa(buf->table[i].dwLocalAddr), ntohs(buf->table[i].dwLocalPort),
+ ntoa(buf->table[i].dwRemoteAddr), ntohs(buf->table[i].dwRemotePort),
+ U(buf->table[i]).dwState );
+ }
}
+ HeapFree(GetProcessHeap(), 0, buf);
}
}
static void testGetUdpTable(void)
{
- if (pGetUdpTable) {
- DWORD apiReturn;
- ULONG dwSize = 0;
+ DWORD apiReturn;
+ ULONG dwSize = 0;
- apiReturn = pGetUdpTable(NULL, &dwSize, FALSE);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetUdpTable is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
- "GetUdpTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
- apiReturn);
- if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
- PMIB_UDPTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
+ apiReturn = GetUdpTable(NULL, &dwSize, FALSE);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetUdpTable is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
+ "GetUdpTable(NULL, &dwSize, FALSE) returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn);
+ if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
+ PMIB_UDPTABLE buf = HeapAlloc(GetProcessHeap(), 0, dwSize);
- apiReturn = pGetUdpTable(buf, &dwSize, FALSE);
- ok(apiReturn == NO_ERROR,
- "GetUdpTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
- apiReturn);
+ apiReturn = GetUdpTable(buf, &dwSize, FALSE);
+ ok(apiReturn == NO_ERROR,
+ "GetUdpTable(buf, &dwSize, FALSE) returned %d, expected NO_ERROR\n",
+ apiReturn);
- if (apiReturn == NO_ERROR && winetest_debug > 1)
- {
- DWORD i;
- trace( "UDP table: %u entries\n", buf->dwNumEntries );
- for (i = 0; i < buf->dwNumEntries; i++)
- trace( "%u: %s:%u\n",
- i, ntoa( buf->table[i].dwLocalAddr ), ntohs(buf->table[i].dwLocalPort) );
- }
- HeapFree(GetProcessHeap(), 0, buf);
+ if (apiReturn == NO_ERROR && winetest_debug > 1)
+ {
+ DWORD i;
+ trace( "UDP table: %u entries\n", buf->dwNumEntries );
+ for (i = 0; i < buf->dwNumEntries; i++)
+ trace( "%u: %s:%u\n",
+ i, ntoa( buf->table[i].dwLocalAddr ), ntohs(buf->table[i].dwLocalPort) );
}
+ HeapFree(GetProcessHeap(), 0, buf);
}
}
@@ -938,11 +836,11 @@ static void testSetTcpEntry(void)
memset(&row, 0, sizeof(row));
if(0) /* This test crashes in OS >= VISTA */
{
- ret = pSetTcpEntry(NULL);
+ ret = SetTcpEntry(NULL);
ok( ret == ERROR_INVALID_PARAMETER, "got %u, expected %u\n", ret, ERROR_INVALID_PARAMETER);
}
- ret = pSetTcpEntry(&row);
+ ret = SetTcpEntry(&row);
if (ret == ERROR_NETWORK_ACCESS_DENIED)
{
win_skip("SetTcpEntry failed with access error. Skipping test.\n");
@@ -951,7 +849,7 @@ static void testSetTcpEntry(void)
todo_wine ok( ret == ERROR_INVALID_PARAMETER, "got %u, expected %u\n", ret, ERROR_INVALID_PARAMETER);
U(row).dwState = MIB_TCP_STATE_DELETE_TCB;
- ret = pSetTcpEntry(&row);
+ ret = SetTcpEntry(&row);
todo_wine ok( ret == ERROR_MR_MID_NOT_FOUND || broken(ret == ERROR_INVALID_PARAMETER),
"got %u, expected %u\n", ret, ERROR_MR_MID_NOT_FOUND);
}
@@ -965,23 +863,18 @@ static void testIcmpSendEcho(void)
ICMP_ECHO_REPLY *reply;
INT i;
- if (!pIcmpSendEcho || !pIcmpCreateFile)
- {
- win_skip( "IcmpSendEcho or IcmpCreateFile not available\n" );
- return;
- }
memset(senddata, 0, sizeof(senddata));
address = htonl(INADDR_LOOPBACK);
SetLastError(0xdeadbeef);
- ret = pIcmpSendEcho(INVALID_HANDLE_VALUE, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(INVALID_HANDLE_VALUE, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
error = GetLastError();
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
ok (error == ERROR_INVALID_PARAMETER
|| broken(error == ERROR_INVALID_HANDLE) /* <= 2003 */,
"expected 87, got %d\n", error);
- icmp = pIcmpCreateFile();
+ icmp = IcmpCreateFile();
if (icmp == INVALID_HANDLE_VALUE)
{
error = GetLastError();
@@ -995,7 +888,7 @@ static void testIcmpSendEcho(void)
address = 0;
SetLastError(0xdeadbeef);
- ret = pIcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
error = GetLastError();
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
ok (error == ERROR_INVALID_NETNAME
@@ -1005,28 +898,28 @@ static void testIcmpSendEcho(void)
address = htonl(INADDR_LOOPBACK);
if (0) /* crashes in XP */
{
- ret = pIcmpSendEcho(icmp, address, NULL, sizeof(senddata), NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, NULL, sizeof(senddata), NULL, replydata, replysz, 1000);
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
}
SetLastError(0xdeadbeef);
- ret = pIcmpSendEcho(icmp, address, senddata, 0, NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, 0, NULL, replydata, replysz, 1000);
error = GetLastError();
ok (ret, "IcmpSendEcho failed unexpectedly with error %d\n", error);
SetLastError(0xdeadbeef);
- ret = pIcmpSendEcho(icmp, address, NULL, 0, NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, NULL, 0, NULL, replydata, replysz, 1000);
error = GetLastError();
ok (ret, "IcmpSendEcho failed unexpectedly with error %d\n", error);
SetLastError(0xdeadbeef);
- ret = pIcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, NULL, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, NULL, replysz, 1000);
error = GetLastError();
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
ok (error == ERROR_INVALID_PARAMETER, "expected 87, got %d\n", error);
SetLastError(0xdeadbeef);
- ret = pIcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, 0, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, 0, 1000);
error = GetLastError();
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
ok (error == ERROR_INVALID_PARAMETER
@@ -1034,7 +927,7 @@ static void testIcmpSendEcho(void)
"expected 87, got %d\n", error);
SetLastError(0xdeadbeef);
- ret = pIcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, NULL, 0, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, NULL, 0, 1000);
error = GetLastError();
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
ok (error == ERROR_INVALID_PARAMETER
@@ -1043,7 +936,7 @@ static void testIcmpSendEcho(void)
SetLastError(0xdeadbeef);
replysz = sizeof(replydata) - 1;
- ret = pIcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
error = GetLastError();
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
ok (error == IP_GENERAL_FAILURE
@@ -1052,19 +945,19 @@ static void testIcmpSendEcho(void)
SetLastError(0xdeadbeef);
replysz = sizeof(ICMP_ECHO_REPLY);
- ret = pIcmpSendEcho(icmp, address, senddata, 0, NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, 0, NULL, replydata, replysz, 1000);
error = GetLastError();
ok (ret, "IcmpSendEcho failed unexpectedly with error %d\n", error);
SetLastError(0xdeadbeef);
replysz = sizeof(ICMP_ECHO_REPLY) + ICMP_MINLEN;
- ret = pIcmpSendEcho(icmp, address, senddata, ICMP_MINLEN, NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, ICMP_MINLEN, NULL, replydata, replysz, 1000);
error = GetLastError();
ok (ret, "IcmpSendEcho failed unexpectedly with error %d\n", error);
SetLastError(0xdeadbeef);
replysz = sizeof(ICMP_ECHO_REPLY) + ICMP_MINLEN;
- ret = pIcmpSendEcho(icmp, address, senddata, ICMP_MINLEN + 1, NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, ICMP_MINLEN + 1, NULL, replydata, replysz, 1000);
error = GetLastError();
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
ok (error == IP_GENERAL_FAILURE
@@ -1072,7 +965,7 @@ static void testIcmpSendEcho(void)
"expected 11050, got %d\n", error);
SetLastError(0xdeadbeef);
- ret = pIcmpSendEcho(icmp, address, senddata, ICMP_MINLEN, NULL, replydata, replysz - 1, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, ICMP_MINLEN, NULL, replydata, replysz - 1, 1000);
error = GetLastError();
ok (!ret, "IcmpSendEcho succeeded unexpectedly\n");
ok (error == IP_GENERAL_FAILURE
@@ -1082,19 +975,19 @@ static void testIcmpSendEcho(void)
/* in windows >= vista the timeout can't be invalid */
SetLastError(0xdeadbeef);
replysz = sizeof(replydata);
- ret = pIcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 0);
+ ret = IcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 0);
error = GetLastError();
if (!ret) ok(error == ERROR_INVALID_PARAMETER, "expected 87, got %d\n", error);
SetLastError(0xdeadbeef);
- ret = pIcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, -1);
+ ret = IcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, -1);
error = GetLastError();
if (!ret) ok(error == ERROR_INVALID_PARAMETER, "expected 87, got %d\n", error);
/* real ping test */
SetLastError(0xdeadbeef);
address = htonl(INADDR_LOOPBACK);
- ret = pIcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
error = GetLastError();
if (ret)
{
@@ -1117,7 +1010,7 @@ static void testIcmpSendEcho(void)
SetLastError(0xdeadbeef);
address = htonl(INADDR_LOOPBACK);
for (i = 0; i < ARRAY_SIZE(senddata); i++) senddata[i] = i & 0xff;
- ret = pIcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
+ ret = IcmpSendEcho(icmp, address, senddata, sizeof(senddata), NULL, replydata, replysz, 1000);
error = GetLastError();
reply = (ICMP_ECHO_REPLY *)replydata;
ok(ret, "IcmpSendEcho failed unexpectedly\n");
@@ -1166,101 +1059,95 @@ static void testWinNT4Functions(void)
static void testGetInterfaceInfo(void)
{
- if (pGetInterfaceInfo) {
- DWORD apiReturn;
- ULONG len = 0;
+ DWORD apiReturn;
+ ULONG len = 0;
- apiReturn = pGetInterfaceInfo(NULL, NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetInterfaceInfo is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetInterfaceInfo returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetInterfaceInfo(NULL, &len);
- ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
- "GetInterfaceInfo returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn = GetInterfaceInfo(NULL, NULL);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetInterfaceInfo is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetInterfaceInfo returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetInterfaceInfo(NULL, &len);
+ ok(apiReturn == ERROR_INSUFFICIENT_BUFFER,
+ "GetInterfaceInfo returned %d, expected ERROR_INSUFFICIENT_BUFFER\n",
+ apiReturn);
+ if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
+ PIP_INTERFACE_INFO buf = HeapAlloc(GetProcessHeap(), 0, len);
+
+ apiReturn = GetInterfaceInfo(buf, &len);
+ ok(apiReturn == NO_ERROR,
+ "GetInterfaceInfo(buf, &dwSize) returned %d, expected NO_ERROR\n",
apiReturn);
- if (apiReturn == ERROR_INSUFFICIENT_BUFFER) {
- PIP_INTERFACE_INFO buf = HeapAlloc(GetProcessHeap(), 0, len);
-
- apiReturn = pGetInterfaceInfo(buf, &len);
- ok(apiReturn == NO_ERROR,
- "GetInterfaceInfo(buf, &dwSize) returned %d, expected NO_ERROR\n",
- apiReturn);
- HeapFree(GetProcessHeap(), 0, buf);
- }
+ HeapFree(GetProcessHeap(), 0, buf);
}
}
static void testGetAdaptersInfo(void)
{
- if (pGetAdaptersInfo) {
- DWORD apiReturn;
- ULONG len = 0;
+ DWORD apiReturn;
+ ULONG len = 0;
- apiReturn = pGetAdaptersInfo(NULL, NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetAdaptersInfo is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetAdaptersInfo returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetAdaptersInfo(NULL, &len);
- ok(apiReturn == ERROR_NO_DATA || apiReturn == ERROR_BUFFER_OVERFLOW,
- "GetAdaptersInfo returned %d, expected ERROR_NO_DATA or ERROR_BUFFER_OVERFLOW\n",
+ apiReturn = GetAdaptersInfo(NULL, NULL);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetAdaptersInfo is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetAdaptersInfo returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetAdaptersInfo(NULL, &len);
+ ok(apiReturn == ERROR_NO_DATA || apiReturn == ERROR_BUFFER_OVERFLOW,
+ "GetAdaptersInfo returned %d, expected ERROR_NO_DATA or ERROR_BUFFER_OVERFLOW\n",
+ apiReturn);
+ if (apiReturn == ERROR_NO_DATA)
+ ; /* no adapter's, that's okay */
+ else if (apiReturn == ERROR_BUFFER_OVERFLOW) {
+ PIP_ADAPTER_INFO ptr, buf = HeapAlloc(GetProcessHeap(), 0, len);
+
+ apiReturn = GetAdaptersInfo(buf, &len);
+ ok(apiReturn == NO_ERROR,
+ "GetAdaptersInfo(buf, &dwSize) returned %d, expected NO_ERROR\n",
apiReturn);
- if (apiReturn == ERROR_NO_DATA)
- ; /* no adapter's, that's okay */
- else if (apiReturn == ERROR_BUFFER_OVERFLOW) {
- PIP_ADAPTER_INFO ptr, buf = HeapAlloc(GetProcessHeap(), 0, len);
-
- apiReturn = pGetAdaptersInfo(buf, &len);
- ok(apiReturn == NO_ERROR,
- "GetAdaptersInfo(buf, &dwSize) returned %d, expected NO_ERROR\n",
- apiReturn);
- ptr = buf;
- while (ptr) {
- ok(ptr->IpAddressList.IpAddress.String[0], "A valid IP must be present\n");
- ok(ptr->IpAddressList.IpMask.String[0], "A valid mask must be present\n");
- trace("Adapter '%s', IP %s, Mask %s\n", ptr->AdapterName,
- ptr->IpAddressList.IpAddress.String, ptr->IpAddressList.IpMask.String);
- ptr = ptr->Next;
- }
- HeapFree(GetProcessHeap(), 0, buf);
+ ptr = buf;
+ while (ptr) {
+ ok(ptr->IpAddressList.IpAddress.String[0], "A valid IP must be present\n");
+ ok(ptr->IpAddressList.IpMask.String[0], "A valid mask must be present\n");
+ trace("Adapter '%s', IP %s, Mask %s\n", ptr->AdapterName,
+ ptr->IpAddressList.IpAddress.String, ptr->IpAddressList.IpMask.String);
+ ptr = ptr->Next;
}
+ HeapFree(GetProcessHeap(), 0, buf);
}
}
static void testGetNetworkParams(void)
{
- if (pGetNetworkParams) {
- DWORD apiReturn;
- ULONG len = 0;
+ DWORD apiReturn;
+ ULONG len = 0;
- apiReturn = pGetNetworkParams(NULL, NULL);
- if (apiReturn == ERROR_NOT_SUPPORTED) {
- skip("GetNetworkParams is not supported\n");
- return;
- }
- ok(apiReturn == ERROR_INVALID_PARAMETER,
- "GetNetworkParams returned %d, expected ERROR_INVALID_PARAMETER\n",
- apiReturn);
- apiReturn = pGetNetworkParams(NULL, &len);
- ok(apiReturn == ERROR_BUFFER_OVERFLOW,
- "GetNetworkParams returned %d, expected ERROR_BUFFER_OVERFLOW\n",
+ apiReturn = GetNetworkParams(NULL, NULL);
+ if (apiReturn == ERROR_NOT_SUPPORTED) {
+ skip("GetNetworkParams is not supported\n");
+ return;
+ }
+ ok(apiReturn == ERROR_INVALID_PARAMETER,
+ "GetNetworkParams returned %d, expected ERROR_INVALID_PARAMETER\n",
+ apiReturn);
+ apiReturn = GetNetworkParams(NULL, &len);
+ ok(apiReturn == ERROR_BUFFER_OVERFLOW,
+ "GetNetworkParams returned %d, expected ERROR_BUFFER_OVERFLOW\n",
+ apiReturn);
+ if (apiReturn == ERROR_BUFFER_OVERFLOW) {
+ PFIXED_INFO buf = HeapAlloc(GetProcessHeap(), 0, len);
+
+ apiReturn = GetNetworkParams(buf, &len);
+ ok(apiReturn == NO_ERROR,
+ "GetNetworkParams(buf, &dwSize) returned %d, expected NO_ERROR\n",
apiReturn);
- if (apiReturn == ERROR_BUFFER_OVERFLOW) {
- PFIXED_INFO buf = HeapAlloc(GetProcessHeap(), 0, len);
-
- apiReturn = pGetNetworkParams(buf, &len);
- ok(apiReturn == NO_ERROR,
- "GetNetworkParams(buf, &dwSize) returned %d, expected NO_ERROR\n",
- apiReturn);
- HeapFree(GetProcessHeap(), 0, buf);
- }
+ HeapFree(GetProcessHeap(), 0, buf);
}
}
@@ -1284,20 +1171,19 @@ static void testGetPerAdapterInfo(void)
DWORD ret, needed;
void *buffer;
- if (!pGetPerAdapterInfo) return;
- ret = pGetPerAdapterInfo(1, NULL, NULL);
+ ret = GetPerAdapterInfo(1, NULL, NULL);
if (ret == ERROR_NOT_SUPPORTED) {
skip("GetPerAdapterInfo is not supported\n");
return;
}
ok( ret == ERROR_INVALID_PARAMETER, "got %u instead of ERROR_INVALID_PARAMETER\n", ret );
needed = 0xdeadbeef;
- ret = pGetPerAdapterInfo(1, NULL, &needed);
+ ret = GetPerAdapterInfo(1, NULL, &needed);
if (ret == ERROR_NO_DATA) return; /* no such adapter */
ok( ret == ERROR_BUFFER_OVERFLOW, "got %u instead of ERROR_BUFFER_OVERFLOW\n", ret );
ok( needed != 0xdeadbeef, "needed not set\n" );
buffer = HeapAlloc( GetProcessHeap(), 0, needed );
- ret = pGetPerAdapterInfo(1, buffer, &needed);
+ ret = GetPerAdapterInfo(1, buffer, &needed);
ok( ret == NO_ERROR, "got %u instead of NO_ERROR\n", ret );
HeapFree( GetProcessHeap(), 0, buffer );
}
@@ -1309,46 +1195,30 @@ static void testNotifyAddrChange(void)
HANDLE handle;
BOOL success;
- if (!pNotifyAddrChange)
- {
- win_skip("NotifyAddrChange not present\n");
- return;
- }
- if (!pCancelIPChangeNotify)
- {
- win_skip("CancelIPChangeNotify not present\n");
- return;
- }
-
handle = NULL;
ZeroMemory(&overlapped, sizeof(overlapped));
- ret = pNotifyAddrChange(&handle, &overlapped);
- if (ret == ERROR_NOT_SUPPORTED)
- {
- win_skip("NotifyAddrChange is not supported\n");
- return;
- }
+ ret = NotifyAddrChange(&handle, &overlapped);
ok(ret == ERROR_IO_PENDING, "NotifyAddrChange returned %d, expected ERROR_IO_PENDING\n", ret);
ret = GetLastError();
todo_wine ok(ret == ERROR_IO_PENDING, "GetLastError returned %d, expected ERROR_IO_PENDING\n", ret);
- success = pCancelIPChangeNotify(&overlapped);
+ success = CancelIPChangeNotify(&overlapped);
todo_wine ok(success == TRUE, "CancelIPChangeNotify returned FALSE, expected TRUE\n");
ZeroMemory(&overlapped, sizeof(overlapped));
- success = pCancelIPChangeNotify(&overlapped);
+ success = CancelIPChangeNotify(&overlapped);
ok(success == FALSE, "CancelIPChangeNotify returned TRUE, expected FALSE\n");
handle = NULL;
ZeroMemory(&overlapped, sizeof(overlapped));
overlapped.hEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
- ret = pNotifyAddrChange(&handle, &overlapped);
+ ret = NotifyAddrChange(&handle, &overlapped);
ok(ret == ERROR_IO_PENDING, "NotifyAddrChange returned %d, expected ERROR_IO_PENDING\n", ret);
todo_wine ok(handle != INVALID_HANDLE_VALUE, "NotifyAddrChange returned invalid file handle\n");
success = GetOverlappedResult(handle, &overlapped, &bytes, FALSE);
ok(success == FALSE, "GetOverlappedResult returned TRUE, expected FALSE\n");
ret = GetLastError();
ok(ret == ERROR_IO_INCOMPLETE, "GetLastError returned %d, expected ERROR_IO_INCOMPLETE\n", ret);
- success = pCancelIPChangeNotify(&overlapped);
+ success = CancelIPChangeNotify(&overlapped);
todo_wine ok(success == TRUE, "CancelIPChangeNotify returned FALSE, expected TRUE\n");
if (winetest_interactive)
@@ -1358,7 +1228,7 @@ static void testNotifyAddrChange(void)
overlapped.hEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
trace("Testing asynchronous ipv4 address change notification. Please "
"change the ipv4 address of one of your network interfaces\n");
- ret = pNotifyAddrChange(&handle, &overlapped);
+ ret = NotifyAddrChange(&handle, &overlapped);
ok(ret == ERROR_IO_PENDING, "NotifyAddrChange returned %d, expected NO_ERROR\n", ret);
success = GetOverlappedResult(handle, &overlapped, &bytes, TRUE);
ok(success == TRUE, "GetOverlappedResult returned FALSE, expected TRUE\n");
@@ -1369,7 +1239,7 @@ static void testNotifyAddrChange(void)
{
trace("Testing synchronous ipv4 address change notification. Please "
"change the ipv4 address of one of your network interfaces\n");
- ret = pNotifyAddrChange(NULL, NULL);
+ ret = NotifyAddrChange(NULL, NULL);
todo_wine ok(ret == NO_ERROR, "NotifyAddrChange returned %d, expected NO_ERROR\n", ret);
}
}
@@ -1399,23 +1269,17 @@ static void test_GetAdaptersAddresses(void)
IP_ADAPTER_ADDRESSES *aa, *ptr;
IP_ADAPTER_UNICAST_ADDRESS *ua;
- if (!pGetAdaptersAddresses)
- {
- win_skip("GetAdaptersAddresses not present\n");
- return;
- }
-
- ret = pGetAdaptersAddresses(AF_UNSPEC, 0, NULL, NULL, NULL);
+ ret = GetAdaptersAddresses(AF_UNSPEC, 0, NULL, NULL, NULL);
ok(ret == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER got %u\n", ret);
/* size should be ignored and overwritten if buffer is NULL */
size = 0x7fffffff;
- ret = pGetAdaptersAddresses(AF_UNSPEC, 0, NULL, NULL, &size);
+ ret = GetAdaptersAddresses(AF_UNSPEC, 0, NULL, NULL, &size);
ok(ret == ERROR_BUFFER_OVERFLOW, "expected ERROR_BUFFER_OVERFLOW, got %u\n", ret);
if (ret != ERROR_BUFFER_OVERFLOW) return;
ptr = HeapAlloc(GetProcessHeap(), 0, size);
- ret = pGetAdaptersAddresses(AF_UNSPEC, 0, NULL, ptr, &size);
+ ret = GetAdaptersAddresses(AF_UNSPEC, 0, NULL, ptr, &size);
ok(!ret, "expected ERROR_SUCCESS got %u\n", ret);
HeapFree(GetProcessHeap(), 0, ptr);
@@ -1423,7 +1287,7 @@ static void test_GetAdaptersAddresses(void)
size *= 2;
osize = size;
ptr = HeapAlloc(GetProcessHeap(), 0, osize);
- ret = pGetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_PREFIX, NULL, ptr, &osize);
+ ret = GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_PREFIX, NULL, ptr, &osize);
ok(!ret, "expected ERROR_SUCCESS got %u\n", ret);
ok(osize == size, "expected %d, got %d\n", size, osize);
@@ -1733,11 +1597,11 @@ static DWORD get_interface_index(void)
DWORD size = 0, ret = 0;
IP_ADAPTER_ADDRESSES *buf, *aa;
- if (pGetAdaptersAddresses( AF_UNSPEC, 0, NULL, NULL, &size ) != ERROR_BUFFER_OVERFLOW)
+ if (GetAdaptersAddresses( AF_UNSPEC, 0, NULL, NULL, &size ) != ERROR_BUFFER_OVERFLOW)
return 0;
buf = HeapAlloc( GetProcessHeap(), 0, size );
- pGetAdaptersAddresses( AF_UNSPEC, 0, NULL, buf, &size );
+ GetAdaptersAddresses( AF_UNSPEC, 0, NULL, buf, &size );
for (aa = buf; aa; aa = aa->Next)
{
if (aa->IfType == IF_TYPE_ETHERNET_CSMACD)
@@ -2084,12 +1948,12 @@ static void test_GetUnicastIpAddressEntry(void)
ret = pGetUnicastIpAddressEntry( &row );
ok( ret == ERROR_FILE_NOT_FOUND, "got %u\n", ret );
- ret = pGetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_ALL_INTERFACES, NULL, NULL, &size);
+ ret = GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_ALL_INTERFACES, NULL, NULL, &size);
ok(ret == ERROR_BUFFER_OVERFLOW, "expected ERROR_BUFFER_OVERFLOW, got %u\n", ret);
if (ret != ERROR_BUFFER_OVERFLOW) return;
ptr = HeapAlloc(GetProcessHeap(), 0, size);
- ret = pGetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_ALL_INTERFACES, NULL, ptr, &size);
+ ret = GetAdaptersAddresses(AF_UNSPEC, GAA_FLAG_INCLUDE_ALL_INTERFACES, NULL, ptr, &size);
ok(!ret, "expected ERROR_SUCCESS got %u\n", ret);
for (aa = ptr; !ret && aa; aa = aa->Next)
--
2.25.0
1
0
1
0
11 Feb '20
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com>
---
.../api-ms-win-core-threadpool-l1-1-0.spec | 2 +-
.../api-ms-win-core-threadpool-l1-2-0.spec | 2 +-
dlls/kernel32/kernel32.spec | 2 +-
dlls/kernelbase/kernelbase.spec | 2 +-
dlls/kernelbase/thread.c | 8 ++++++++
5 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/api-ms-win-core-threadpool-l1-1-0/api-ms-win-core-threadpool-l1-1-0.spec b/dlls/api-ms-win-core-threadpool-l1-1-0/api-ms-win-core-threadpool-l1-1-0.spec
index 4f4580a293..db59501219 100644
--- a/dlls/api-ms-win-core-threadpool-l1-1-0/api-ms-win-core-threadpool-l1-1-0.spec
+++ b/dlls/api-ms-win-core-threadpool-l1-1-0/api-ms-win-core-threadpool-l1-1-0.spec
@@ -27,7 +27,7 @@
@ stdcall ReleaseMutexWhenCallbackReturns(ptr long) kernel32.ReleaseMutexWhenCallbackReturns
@ stdcall ReleaseSemaphoreWhenCallbackReturns(ptr long long) kernel32.ReleaseSemaphoreWhenCallbackReturns
@ stdcall SetEventWhenCallbackReturns(ptr long) kernel32.SetEventWhenCallbackReturns
-@ stub SetThreadpoolStackInformation
+@ stdcall SetThreadpoolStackInformation(ptr ptr) kernel32.SetThreadpoolStackInformation
@ stdcall SetThreadpoolThreadMaximum(ptr long) kernel32.SetThreadpoolThreadMaximum
@ stdcall SetThreadpoolThreadMinimum(ptr long) kernel32.SetThreadpoolThreadMinimum
@ stdcall SetThreadpoolTimer(ptr ptr long long) kernel32.SetThreadpoolTimer
diff --git a/dlls/api-ms-win-core-threadpool-l1-2-0/api-ms-win-core-threadpool-l1-2-0.spec b/dlls/api-ms-win-core-threadpool-l1-2-0/api-ms-win-core-threadpool-l1-2-0.spec
index dc110ef9ed..eb5ce3d246 100644
--- a/dlls/api-ms-win-core-threadpool-l1-2-0/api-ms-win-core-threadpool-l1-2-0.spec
+++ b/dlls/api-ms-win-core-threadpool-l1-2-0/api-ms-win-core-threadpool-l1-2-0.spec
@@ -21,7 +21,7 @@
@ stdcall ReleaseMutexWhenCallbackReturns(ptr long) kernel32.ReleaseMutexWhenCallbackReturns
@ stdcall ReleaseSemaphoreWhenCallbackReturns(ptr long long) kernel32.ReleaseSemaphoreWhenCallbackReturns
@ stdcall SetEventWhenCallbackReturns(ptr long) kernel32.SetEventWhenCallbackReturns
-@ stub SetThreadpoolStackInformation
+@ stdcall SetThreadpoolStackInformation(ptr ptr) kernel32.SetThreadpoolStackInformation
@ stdcall SetThreadpoolThreadMaximum(ptr long) kernel32.SetThreadpoolThreadMaximum
@ stdcall SetThreadpoolThreadMinimum(ptr long) kernel32.SetThreadpoolThreadMinimum
@ stdcall SetThreadpoolTimer(ptr ptr long long) kernel32.SetThreadpoolTimer
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 47c7d63761..bfbf034f12 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -1462,7 +1462,7 @@
@ stdcall -import SetThreadStackGuarantee(ptr)
# @ stub SetThreadToken
@ stdcall -import SetThreadUILanguage(long)
-# @ stub SetThreadpoolStackInformation
+@ stdcall -import SetThreadpoolStackInformation(ptr ptr)
@ stdcall SetThreadpoolThreadMaximum(ptr long) ntdll.TpSetPoolMaxThreads
@ stdcall SetThreadpoolThreadMinimum(ptr long) ntdll.TpSetPoolMinThreads
@ stdcall SetThreadpoolTimer(ptr ptr long long) ntdll.TpSetTimer
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index caa6de1d51..5616465670 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1492,7 +1492,7 @@
@ stdcall SetThreadStackGuarantee(ptr)
@ stdcall SetThreadToken(ptr ptr)
@ stdcall SetThreadUILanguage(long)
-@ stub SetThreadpoolStackInformation
+@ stdcall SetThreadpoolStackInformation(ptr ptr)
@ stdcall SetThreadpoolThreadMaximum(ptr long) ntdll.TpSetPoolMaxThreads
@ stdcall SetThreadpoolThreadMinimum(ptr long) ntdll.TpSetPoolMinThreads
@ stdcall SetThreadpoolTimer(ptr ptr long long) ntdll.TpSetTimer
diff --git a/dlls/kernelbase/thread.c b/dlls/kernelbase/thread.c
index 6af9ffa406..27dc089d8d 100644
--- a/dlls/kernelbase/thread.c
+++ b/dlls/kernelbase/thread.c
@@ -1223,6 +1223,14 @@ PTP_WAIT WINAPI DECLSPEC_HOTPATCH CreateThreadpoolWait( PTP_WAIT_CALLBACK callba
return wait;
}
+/***********************************************************************
+ * SetThreadpoolStackInformation (kernelbase.@)
+ */
+BOOL WINAPI SetThreadpoolStackInformation(PTP_POOL pool, PTP_POOL_STACK_INFORMATION info)
+{
+ FIXME("%p, %p stub\n", pool, info);
+ return TRUE;
+}
/***********************************************************************
* CreateThreadpoolWork (kernelbase.@)
--
2.17.1
3
3
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair(a)hotmail.com>
---
.../api-ms-win-core-threadpool-l1-1-0.spec | 2 +-
.../api-ms-win-core-threadpool-l1-2-0.spec | 2 +-
dlls/kernel32/kernel32.spec | 2 +-
dlls/kernelbase/kernelbase.spec | 2 +-
dlls/kernelbase/thread.c | 8 ++++++++
5 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/api-ms-win-core-threadpool-l1-1-0/api-ms-win-core-threadpool-l1-1-0.spec b/dlls/api-ms-win-core-threadpool-l1-1-0/api-ms-win-core-threadpool-l1-1-0.spec
index db59501219..0640e5cc33 100644
--- a/dlls/api-ms-win-core-threadpool-l1-1-0/api-ms-win-core-threadpool-l1-1-0.spec
+++ b/dlls/api-ms-win-core-threadpool-l1-1-0/api-ms-win-core-threadpool-l1-1-0.spec
@@ -32,7 +32,7 @@
@ stdcall SetThreadpoolThreadMinimum(ptr long) kernel32.SetThreadpoolThreadMinimum
@ stdcall SetThreadpoolTimer(ptr ptr long long) kernel32.SetThreadpoolTimer
@ stdcall SetThreadpoolWait(ptr long ptr) kernel32.SetThreadpoolWait
-@ stub StartThreadpoolIo
+@ stdcall StartThreadpoolIo(ptr) kernel32.StartThreadpoolIo
@ stdcall SubmitThreadpoolWork(ptr) kernel32.SubmitThreadpoolWork
@ stdcall TrySubmitThreadpoolCallback(ptr ptr ptr) kernel32.TrySubmitThreadpoolCallback
@ stdcall UnregisterWaitEx(long long) kernel32.UnregisterWaitEx
diff --git a/dlls/api-ms-win-core-threadpool-l1-2-0/api-ms-win-core-threadpool-l1-2-0.spec b/dlls/api-ms-win-core-threadpool-l1-2-0/api-ms-win-core-threadpool-l1-2-0.spec
index eb5ce3d246..c2ea097445 100644
--- a/dlls/api-ms-win-core-threadpool-l1-2-0/api-ms-win-core-threadpool-l1-2-0.spec
+++ b/dlls/api-ms-win-core-threadpool-l1-2-0/api-ms-win-core-threadpool-l1-2-0.spec
@@ -28,7 +28,7 @@
@ stub SetThreadpoolTimerEx
@ stdcall SetThreadpoolWait(ptr long ptr) kernel32.SetThreadpoolWait
@ stub SetThreadpoolWaitEx
-@ stub StartThreadpoolIo
+@ stdcall StartThreadpoolIo(ptr) kernel32.StartThreadpoolIo
@ stdcall SubmitThreadpoolWork(ptr) kernel32.SubmitThreadpoolWork
@ stdcall TrySubmitThreadpoolCallback(ptr ptr ptr) kernel32.TrySubmitThreadpoolCallback
@ stub WaitForThreadpoolIoCallbacks
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index bfbf034f12..0a93f80291 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -1490,7 +1490,7 @@
@ stdcall -import SleepEx(long long)
# @ stub SortCloseHandle
# @ stub SortGetHandle
-# @ stub StartThreadpoolIo
+@ stdcall -import StartThreadpoolIo(ptr)
@ stdcall SubmitThreadpoolWork(ptr) ntdll.TpPostWork
@ stdcall -import SuspendThread(long)
@ stdcall -import SwitchToFiber(ptr)
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 5616465670..5539b3078f 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1515,7 +1515,7 @@
@ stdcall SleepConditionVariableSRW(ptr ptr long long)
@ stdcall SleepEx(long long)
@ stub SpecialMBToWC
-@ stub StartThreadpoolIo
+@ stdcall StartThreadpoolIo(ptr)
# @ stub StmAlignSize
# @ stub StmAllocateFlat
# @ stub StmCoalesceChunks
diff --git a/dlls/kernelbase/thread.c b/dlls/kernelbase/thread.c
index 27dc089d8d..c56a18da25 100644
--- a/dlls/kernelbase/thread.c
+++ b/dlls/kernelbase/thread.c
@@ -1232,6 +1232,14 @@ BOOL WINAPI SetThreadpoolStackInformation(PTP_POOL pool, PTP_POOL_STACK_INFORMAT
return TRUE;
}
+/***********************************************************************
+ * StartThreadpoolIo (kernelbase.@)
+ */
+void StartThreadpoolIo(PTP_IO pio)
+{
+ FIXME("%p stub\n", pio);
+}
+
/***********************************************************************
* CreateThreadpoolWork (kernelbase.@)
*/
--
2.17.1
2
1
[PATCH 1/5] quartz/tests: Add some tests for IBasicVideo::GetCurrentImage().
by Zebediah Figura 11 Feb '20
by Zebediah Figura 11 Feb '20
11 Feb '20
Signed-off-by: Zebediah Figura <z.figura12(a)gmail.com>
---
dlls/quartz/tests/videorenderer.c | 76 ++++++++++++++++++++++
dlls/quartz/tests/vmr7.c | 101 ++++++++++++++++++++++++++++++
dlls/quartz/tests/vmr9.c | 98 +++++++++++++++++++++++++++++
3 files changed, 275 insertions(+)
diff --git a/dlls/quartz/tests/videorenderer.c b/dlls/quartz/tests/videorenderer.c
index 4e26a18f83..f0c84c60e3 100644
--- a/dlls/quartz/tests/videorenderer.c
+++ b/dlls/quartz/tests/videorenderer.c
@@ -1071,6 +1071,81 @@ static void test_eos(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
IMediaControl_Release(control);
}
+static void test_current_image(IBaseFilter *filter, IMemInputPin *input,
+ IFilterGraph2 *graph, const BITMAPINFOHEADER *expect_bih)
+{
+ LONG buffer[(sizeof(BITMAPINFOHEADER) + 32 * 16 * 2) / 4];
+ const BITMAPINFOHEADER *bih = (BITMAPINFOHEADER *)buffer;
+ IMediaControl *control;
+ OAFilterState state;
+ IBasicVideo *video;
+ unsigned int i;
+ HANDLE thread;
+ HRESULT hr;
+ LONG size;
+
+ IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
+ IBaseFilter_QueryInterface(filter, &IID_IBasicVideo, (void **)&video);
+
+ hr = IBasicVideo_GetCurrentImage(video, NULL, NULL);
+ ok(hr == E_POINTER, "Got hr %#x.\n", hr);
+
+ hr = IBasicVideo_GetCurrentImage(video, NULL, buffer);
+ ok(hr == E_POINTER, "Got hr %#x.\n", hr);
+
+ size = 0xdeadbeef;
+ hr = IBasicVideo_GetCurrentImage(video, &size, NULL);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ todo_wine ok(size == sizeof(BITMAPINFOHEADER) + 32 * 16 * 2, "Got size %d.\n", size);
+
+ size = 0xdeadbeef;
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ ok(hr == VFW_E_NOT_PAUSED, "Got hr %#x.\n", hr);
+ ok(size == 0xdeadbeef, "Got size %d.\n", size);
+
+ hr = IMediaControl_Pause(control);
+ ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+
+ size = 0xdeadbeef;
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ ok(hr == E_UNEXPECTED, "Got hr %#x.\n", hr);
+ ok(size == 0xdeadbeef, "Got size %d.\n", size);
+
+ thread = send_frame(input);
+ hr = IMediaControl_GetState(control, 1000, &state);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+ size = sizeof(BITMAPINFOHEADER) + 32 * 16 * 2 - 1;
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ todo_wine ok(hr == E_OUTOFMEMORY, "Got hr %#x.\n", hr);
+ todo_wine ok(size == sizeof(BITMAPINFOHEADER) + 32 * 16 * 2 - 1, "Got size %d.\n", size);
+
+ size = sizeof(BITMAPINFOHEADER) + 32 * 16 * 2;
+ memset(buffer, 0xcc, sizeof(buffer));
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+ ok(size == sizeof(BITMAPINFOHEADER) + 32 * 16 * 2, "Got size %d.\n", size);
+ ok(!memcmp(bih, expect_bih, sizeof(BITMAPINFOHEADER)), "Bitmap headers didn't match.\n");
+ for (i = 0; i < 32 * 16 * 2; ++i)
+ {
+ const unsigned char *data = (unsigned char *)buffer + sizeof(BITMAPINFOHEADER);
+ ok(data[i] == 0x55, "Got unexpected byte %02x at %u.\n", data[i], i);
+ }
+
+ hr = IMediaControl_Run(control);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ join_thread(thread);
+
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ ok(hr == VFW_E_NOT_PAUSED, "Got hr %#x.\n", hr);
+
+ hr = IMediaControl_Stop(control);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+ IBasicVideo_Release(video);
+ IMediaControl_Release(control);
+}
+
static void test_connect_pin(void)
{
VIDEOINFOHEADER vih =
@@ -1178,6 +1253,7 @@ static void test_connect_pin(void)
test_flushing(pin, input, graph);
test_sample_time(pin, input, graph);
test_eos(pin, input, graph);
+ test_current_image(filter, input, graph, &vih.bmiHeader);
hr = IFilterGraph2_Disconnect(graph, pin);
ok(hr == S_OK, "Got hr %#x.\n", hr);
diff --git a/dlls/quartz/tests/vmr7.c b/dlls/quartz/tests/vmr7.c
index bb793741e9..32b2ae7bef 100644
--- a/dlls/quartz/tests/vmr7.c
+++ b/dlls/quartz/tests/vmr7.c
@@ -1223,6 +1223,106 @@ static void test_flushing(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
IMediaControl_Release(control);
}
+static void test_current_image(IBaseFilter *filter, IMemInputPin *input,
+ IFilterGraph2 *graph, const BITMAPINFOHEADER *req_bih)
+{
+ LONG buffer[(sizeof(BITMAPINFOHEADER) + 32 * 16 * 4) / 4];
+ const BITMAPINFOHEADER *bih = (BITMAPINFOHEADER *)buffer;
+ const DWORD *data = (DWORD *)((char *)buffer + sizeof(BITMAPINFOHEADER));
+ BITMAPINFOHEADER expect_bih = *req_bih;
+ IMemAllocator *allocator;
+ IMediaControl *control;
+ OAFilterState state;
+ IBasicVideo *video;
+ unsigned int i;
+ HANDLE thread;
+ HRESULT hr;
+ LONG size;
+
+ /* Note that the bitmap returned by GetCurrentImage() has a bit depth of
+ * 32 regardless of the format used for pin connection. */
+ expect_bih.biBitCount = 32;
+ expect_bih.biSizeImage = 32 * 16 * 4;
+
+ IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
+ IBaseFilter_QueryInterface(filter, &IID_IBasicVideo, (void **)&video);
+
+ hr = IBasicVideo_GetCurrentImage(video, NULL, NULL);
+ ok(hr == E_POINTER, "Got hr %#x.\n", hr);
+
+ hr = IBasicVideo_GetCurrentImage(video, NULL, buffer);
+ ok(hr == E_POINTER, "Got hr %#x.\n", hr);
+
+ size = 0xdeadbeef;
+ hr = IBasicVideo_GetCurrentImage(video, &size, NULL);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ todo_wine ok(size == sizeof(BITMAPINFOHEADER) + 32 * 16 * 4, "Got size %d.\n", size);
+
+ size = sizeof(buffer);
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ ok(size == sizeof(buffer), "Got size %d.\n", size);
+ todo_wine ok(!memcmp(bih, &expect_bih, sizeof(BITMAPINFOHEADER)), "Bitmap headers didn't match.\n");
+ /* The contents seem to reflect the last frame rendered. */
+
+ hr = IMemInputPin_GetAllocator(input, &allocator);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+ hr = IMemAllocator_Commit(allocator);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+ IMemAllocator_Release(allocator);
+
+ hr = IMediaControl_Pause(control);
+ ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+
+ size = sizeof(buffer);
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ ok(size == sizeof(buffer), "Got size %d.\n", size);
+ todo_wine ok(!memcmp(bih, &expect_bih, sizeof(BITMAPINFOHEADER)), "Bitmap headers didn't match.\n");
+ /* The contents seem to reflect the last frame rendered. */
+
+ thread = send_frame(input);
+ hr = IMediaControl_GetState(control, 1000, &state);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+ size = 1;
+ memset(buffer, 0xcc, sizeof(buffer));
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+ todo_wine ok(size == 1, "Got size %d.\n", size);
+
+ size = sizeof(buffer);
+ memset(buffer, 0xcc, sizeof(buffer));
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+ ok(size == sizeof(buffer), "Got size %d.\n", size);
+ todo_wine ok(!memcmp(bih, &expect_bih, sizeof(BITMAPINFOHEADER)), "Bitmap headers didn't match.\n");
+ for (i = 0; i < 32 * 16; ++i)
+ ok((data[i] & 0xffffff) == 0x555555, "Got unexpected color %08x at %u.\n", data[i], i);
+
+ hr = IMediaControl_Run(control);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ join_thread(thread);
+
+ size = sizeof(buffer);
+ memset(buffer, 0xcc, sizeof(buffer));
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ ok(size == sizeof(buffer), "Got size %d.\n", size);
+ if (hr == S_OK)
+ {
+ ok(!memcmp(bih, &expect_bih, sizeof(BITMAPINFOHEADER)), "Bitmap headers didn't match.\n");
+ for (i = 0; i < 32 * 16; ++i)
+ ok((data[i] & 0xffffff) == 0x555555, "Got unexpected color %08x at %u.\n", data[i], i);
+ }
+
+ hr = IMediaControl_Stop(control);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+ IBasicVideo_Release(video);
+ IMediaControl_Release(control);
+}
+
static void test_connect_pin(void)
{
VIDEOINFOHEADER vih =
@@ -1361,6 +1461,7 @@ static void test_connect_pin(void)
test_filter_state(input, graph);
test_flushing(pin, input, graph);
+ test_current_image(filter, input, graph, &vih.bmiHeader);
hr = IFilterGraph2_Disconnect(graph, pin);
ok(hr == S_OK, "Got hr %#x.\n", hr);
diff --git a/dlls/quartz/tests/vmr9.c b/dlls/quartz/tests/vmr9.c
index a800aaeb70..293cc6d959 100644
--- a/dlls/quartz/tests/vmr9.c
+++ b/dlls/quartz/tests/vmr9.c
@@ -1227,6 +1227,103 @@ static void test_flushing(IPin *pin, IMemInputPin *input, IFilterGraph2 *graph)
IMediaControl_Release(control);
}
+static void test_current_image(IBaseFilter *filter, IMemInputPin *input,
+ IFilterGraph2 *graph, const BITMAPINFOHEADER *req_bih)
+{
+ LONG buffer[(sizeof(BITMAPINFOHEADER) + 32 * 16 * 4) / 4];
+ const BITMAPINFOHEADER *bih = (BITMAPINFOHEADER *)buffer;
+ const DWORD *data = (DWORD *)((char *)buffer + sizeof(BITMAPINFOHEADER));
+ BITMAPINFOHEADER expect_bih = *req_bih;
+ IMemAllocator *allocator;
+ IMediaControl *control;
+ OAFilterState state;
+ IBasicVideo *video;
+ unsigned int i;
+ HANDLE thread;
+ HRESULT hr;
+ LONG size;
+
+ expect_bih.biSizeImage = 32 * 16 * 4;
+
+ IFilterGraph2_QueryInterface(graph, &IID_IMediaControl, (void **)&control);
+ IBaseFilter_QueryInterface(filter, &IID_IBasicVideo, (void **)&video);
+
+ hr = IBasicVideo_GetCurrentImage(video, NULL, NULL);
+ ok(hr == E_POINTER, "Got hr %#x.\n", hr);
+
+ hr = IBasicVideo_GetCurrentImage(video, NULL, buffer);
+ ok(hr == E_POINTER, "Got hr %#x.\n", hr);
+
+ size = 0xdeadbeef;
+ hr = IBasicVideo_GetCurrentImage(video, &size, NULL);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ todo_wine ok(size == sizeof(BITMAPINFOHEADER) + 32 * 16 * 4, "Got size %d.\n", size);
+
+ size = sizeof(buffer);
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ ok(size == sizeof(buffer), "Got size %d.\n", size);
+ todo_wine ok(!memcmp(bih, &expect_bih, sizeof(BITMAPINFOHEADER)), "Bitmap headers didn't match.\n");
+ /* The contents seem to reflect the last frame rendered. */
+
+ hr = IMemInputPin_GetAllocator(input, &allocator);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+ hr = IMemAllocator_Commit(allocator);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+ IMemAllocator_Release(allocator);
+
+ hr = IMediaControl_Pause(control);
+ ok(hr == S_FALSE, "Got hr %#x.\n", hr);
+
+ size = sizeof(buffer);
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ ok(size == sizeof(buffer), "Got size %d.\n", size);
+ todo_wine ok(!memcmp(bih, &expect_bih, sizeof(BITMAPINFOHEADER)), "Bitmap headers didn't match.\n");
+ /* The contents seem to reflect the last frame rendered. */
+
+ thread = send_frame(input);
+ hr = IMediaControl_GetState(control, 1000, &state);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+ size = 1;
+ memset(buffer, 0xcc, sizeof(buffer));
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+ todo_wine ok(size == 1, "Got size %d.\n", size);
+
+ size = sizeof(buffer);
+ memset(buffer, 0xcc, sizeof(buffer));
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+ ok(size == sizeof(buffer), "Got size %d.\n", size);
+ todo_wine ok(!memcmp(bih, &expect_bih, sizeof(BITMAPINFOHEADER)), "Bitmap headers didn't match.\n");
+ for (i = 0; i < 32 * 16; ++i)
+ ok((data[i] & 0xffffff) == 0x555555, "Got unexpected color %08x at %u.\n", data[i], i);
+
+ hr = IMediaControl_Run(control);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ join_thread(thread);
+
+ size = sizeof(buffer);
+ memset(buffer, 0xcc, sizeof(buffer));
+ hr = IBasicVideo_GetCurrentImage(video, &size, buffer);
+ todo_wine ok(hr == S_OK, "Got hr %#x.\n", hr);
+ ok(size == sizeof(buffer), "Got size %d.\n", size);
+ if (hr == S_OK)
+ {
+ ok(!memcmp(bih, &expect_bih, sizeof(BITMAPINFOHEADER)), "Bitmap headers didn't match.\n");
+ for (i = 0; i < 32 * 16; ++i)
+ ok((data[i] & 0xffffff) == 0x555555, "Got unexpected color %08x at %u.\n", data[i], i);
+ }
+
+ hr = IMediaControl_Stop(control);
+ ok(hr == S_OK, "Got hr %#x.\n", hr);
+
+ IBasicVideo_Release(video);
+ IMediaControl_Release(control);
+}
+
static void test_connect_pin(void)
{
VIDEOINFOHEADER vih =
@@ -1364,6 +1461,7 @@ static void test_connect_pin(void)
test_filter_state(input, graph);
test_flushing(pin, input, graph);
+ test_current_image(filter, input, graph, &vih.bmiHeader);
hr = IFilterGraph2_Disconnect(graph, pin);
ok(hr == S_OK, "Got hr %#x.\n", hr);
--
2.25.0
2
9
[PATCH] include: Fix size of DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY enum.
by Brendan Shanks 11 Feb '20
by Brendan Shanks 11 Feb '20
11 Feb '20
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48577
Signed-off-by: Brendan Shanks <bshanks(a)codeweavers.com>
---
include/wingdi.h | 36 ++++++++++++++++++------------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/include/wingdi.h b/include/wingdi.h
index bed2c70798..0a456f8230 100644
--- a/include/wingdi.h
+++ b/include/wingdi.h
@@ -3409,24 +3409,24 @@ typedef enum
typedef enum
{
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = 0,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = 1,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = 2,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = 3,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = 4,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = 5,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = 6,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = 8,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = 9,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = 15,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = 0x80000000,
- DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = 0xffffffff
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = (int) -1,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = (int) 0,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = (int) 1,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = (int) 2,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = (int) 3,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = (int) 4,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = (int) 5,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = (int) 6,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = (int) 8,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = (int) 9,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = (int) 10,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = (int) 11,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = (int) 12,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = (int) 13,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = (int) 14,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = (int) 15,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = (int) 0x80000000,
+ DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = (int) 0xffffffff
} DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY;
typedef struct DISPLAYCONFIG_2DREGION
--
2.24.1
1
0