mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 08:25:03 +00:00
[ROSTESTS]
- Add tcpip_drvtest, for now only testing the IOCTL behind iphlpapi's GetInterfaceInfo svn path=/trunk/; revision=65547
This commit is contained in:
parent
a928f15f42
commit
e7ed762d4b
5 changed files with 139 additions and 1 deletions
|
@ -1,7 +1,7 @@
|
|||
|
||||
add_subdirectory(apitests)
|
||||
#add_subdirectory(dibtests)
|
||||
#add_subdirectory(drivers)
|
||||
add_subdirectory(drivers)
|
||||
#add_subdirectory(dxtest)
|
||||
add_subdirectory(kmtests)
|
||||
#add_subdirectory(regtests)
|
||||
|
|
5
rostests/drivers/CMakeLists.txt
Normal file
5
rostests/drivers/CMakeLists.txt
Normal file
|
@ -0,0 +1,5 @@
|
|||
|
||||
#add_subdirectory(csqtest)
|
||||
#add_subdirectory(memtest)
|
||||
#add_subdirectory(ntoskrnl)
|
||||
add_subdirectory(tcpip)
|
12
rostests/drivers/tcpip/CMakeLists.txt
Normal file
12
rostests/drivers/tcpip/CMakeLists.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
|
||||
include_directories(../../apitests/include)
|
||||
|
||||
list(APPEND SOURCE
|
||||
InterfaceInfo.c
|
||||
testlist.c)
|
||||
|
||||
add_executable(tcpip_drvtest ${SOURCE})
|
||||
target_link_libraries(tcpip_drvtest wine)
|
||||
set_module_type(tcpip_drvtest win32cui)
|
||||
add_importlibs(tcpip_drvtest msvcrt kernel32 ntdll)
|
||||
add_cd_file(TARGET tcpip_drvtest DESTINATION reactos/bin FOR all)
|
107
rostests/drivers/tcpip/InterfaceInfo.c
Normal file
107
rostests/drivers/tcpip/InterfaceInfo.c
Normal file
|
@ -0,0 +1,107 @@
|
|||
/*
|
||||
* PROJECT: ReactOS kernel-mode tests
|
||||
* LICENSE: GPLv2+ - See COPYING in the top level directory
|
||||
* PURPOSE: User mode part of the TcpIp.sys test suite
|
||||
* PROGRAMMER: Jérôme Gardou <jerome.gardou@reactos.org>
|
||||
*/
|
||||
|
||||
#include <apitest.h>
|
||||
|
||||
#include <ipexport.h>
|
||||
#include <winioctl.h>
|
||||
#include <tcpioctl.h>
|
||||
#include <tcpip_undoc.h>
|
||||
|
||||
START_TEST(InterfaceInfo)
|
||||
{
|
||||
IP_INTERFACE_INFO* pInterfaceInfo;
|
||||
IP_INTERFACE_INFO InterfaceInfo;
|
||||
HANDLE FileHandle;
|
||||
DWORD BufferSize;
|
||||
BOOL Result;
|
||||
ULONG i;
|
||||
|
||||
/* Open a control channel file for TCP */
|
||||
FileHandle = CreateFileW(
|
||||
L"\\\\.\\Tcp",
|
||||
FILE_READ_DATA | FILE_WRITE_DATA,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_FLAG_OVERLAPPED,
|
||||
NULL);
|
||||
ok(FileHandle != INVALID_HANDLE_VALUE, "CreateFile failed, GLE %lu\n", GetLastError());
|
||||
|
||||
/* Try the IOCTL */
|
||||
BufferSize = 0;
|
||||
pInterfaceInfo = &InterfaceInfo;
|
||||
Result = DeviceIoControl(
|
||||
FileHandle,
|
||||
IOCTL_IP_INTERFACE_INFO,
|
||||
NULL,
|
||||
0,
|
||||
pInterfaceInfo,
|
||||
sizeof(InterfaceInfo),
|
||||
&BufferSize,
|
||||
NULL);
|
||||
ok(!Result, "DeviceIoControl succeeded.\n");
|
||||
ok_long(GetLastError(), ERROR_INVALID_FUNCTION);
|
||||
ok_long(BufferSize, 0);
|
||||
|
||||
CloseHandle(FileHandle);
|
||||
|
||||
/* This IOCTL only works with \Device\Ip */
|
||||
FileHandle = CreateFileW(
|
||||
L"\\\\.\\Ip",
|
||||
FILE_READ_DATA | FILE_WRITE_DATA,
|
||||
FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||
NULL,
|
||||
OPEN_EXISTING,
|
||||
FILE_FLAG_OVERLAPPED,
|
||||
NULL);
|
||||
ok(FileHandle != INVALID_HANDLE_VALUE, "CreateFile failed, GLE %lu\n", GetLastError());
|
||||
|
||||
/* Get the buffer size. */
|
||||
BufferSize = 0;
|
||||
pInterfaceInfo = &InterfaceInfo;
|
||||
Result = DeviceIoControl(
|
||||
FileHandle,
|
||||
IOCTL_IP_INTERFACE_INFO,
|
||||
NULL,
|
||||
0,
|
||||
pInterfaceInfo,
|
||||
sizeof(InterfaceInfo),
|
||||
&BufferSize,
|
||||
NULL);
|
||||
ok(Result, "DeviceIoControl failed.\n");
|
||||
ok(BufferSize != 0, "Buffer size is zero.\n");
|
||||
trace("Buffer size is %lu.\n", BufferSize);
|
||||
|
||||
if (BufferSize > sizeof(InterfaceInfo))
|
||||
{
|
||||
pInterfaceInfo = HeapAlloc(GetProcessHeap(), 0, BufferSize);
|
||||
ok(pInterfaceInfo != NULL, "HeapAlloc failed.\n");
|
||||
|
||||
/* Send IOCTL to fill the buffer in. */
|
||||
Result = DeviceIoControl(
|
||||
FileHandle,
|
||||
IOCTL_IP_INTERFACE_INFO,
|
||||
NULL,
|
||||
0,
|
||||
pInterfaceInfo,
|
||||
BufferSize,
|
||||
&BufferSize,
|
||||
NULL);
|
||||
ok(Result, "DeviceIoControl failed.\n");
|
||||
}
|
||||
|
||||
/* Nothing much to test. Just print out the adapters we got */
|
||||
trace("We got %ld adapters.\n", pInterfaceInfo->NumAdapters);
|
||||
for (i = 0; i < pInterfaceInfo->NumAdapters; i++)
|
||||
{
|
||||
trace("\tIndex %lu, name %S\n", pInterfaceInfo->Adapter[i].Index, pInterfaceInfo->Adapter[i].Name);
|
||||
}
|
||||
|
||||
HeapFree(GetProcessHeap(), 0, pInterfaceInfo);
|
||||
CloseHandle(FileHandle);
|
||||
}
|
14
rostests/drivers/tcpip/testlist.c
Normal file
14
rostests/drivers/tcpip/testlist.c
Normal file
|
@ -0,0 +1,14 @@
|
|||
#define __ROS_LONG64__
|
||||
|
||||
#define STANDALONE
|
||||
#include <apitest.h>
|
||||
|
||||
extern void func_InterfaceInfo(void);
|
||||
|
||||
const struct test winetest_testlist[] =
|
||||
{
|
||||
{ "InterfaceInfo", func_InterfaceInfo },
|
||||
|
||||
{ 0, 0 }
|
||||
};
|
||||
|
Loading…
Reference in a new issue