From: Cameron Gutman Date: Sat, 6 Mar 2010 18:30:55 +0000 (+0000) Subject: - Add a stub for GetOwnerModuleFromTcpEntry X-Git-Tag: backups/header-work@57446~208^2~38 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=f6b997c0d2154152251e57edf96bf88d563ae321 - Add a stub for GetOwnerModuleFromTcpEntry - Patch by Olaf Siejka svn path=/trunk/; revision=45960 --- diff --git a/reactos/dll/win32/iphlpapi/iphlpapi.spec b/reactos/dll/win32/iphlpapi/iphlpapi.spec index b07c464fb76..f65673b601f 100644 --- a/reactos/dll/win32/iphlpapi/iphlpapi.spec +++ b/reactos/dll/win32/iphlpapi/iphlpapi.spec @@ -61,7 +61,7 @@ @ stdcall GetNetworkParams( ptr ptr ) @ stdcall GetNumberOfInterfaces( ptr ) @ stub GetOwnerModuleFromTcp6Entry -@ stub GetOwnerModuleFromTcpEntry +@ stdcall GetOwnerModuleFromTcpEntry ( ptr long ptr ptr ) @ stub GetOwnerModuleFromUdp6Entry @ stub GetOwnerModuleFromUdpEntry @ stdcall GetPerAdapterInfo( long ptr ptr ) diff --git a/reactos/dll/win32/iphlpapi/iphlpapi_main.c b/reactos/dll/win32/iphlpapi/iphlpapi_main.c index 47146e6cd14..0bc146b6616 100644 --- a/reactos/dll/win32/iphlpapi/iphlpapi_main.c +++ b/reactos/dll/win32/iphlpapi/iphlpapi_main.c @@ -1505,6 +1505,33 @@ DWORD WINAPI GetNumberOfInterfaces(PDWORD pdwNumIf) } +/****************************************************************** + * GetOwnerModuleFromTcpEntry (IPHLPAPI.@) + * + * Get data about the module that issued the context bind for a specific IPv4 TCP endpoint in a MIB table row + * + * PARAMS + * pTcpEntry [in] pointer to a MIB_TCPROW_OWNER_MODULE structure + * Class [in] TCPIP_OWNER_MODULE_INFO_CLASS enumeration value + * Buffer [out] pointer a buffer containing a TCPIP_OWNER_MODULE_BASIC_INFO structure with the owner module data. + * pdwSize [in, out] estimated size of the structure returned in Buffer, in bytes + * + * RETURNS + * Success: NO_ERROR + * Failure: ERROR_INSUFFICIENT_BUFFER, ERROR_INVALID_PARAMETER, ERROR_NOT_ENOUGH_MEMORY + * ERROR_NOT_FOUND or ERROR_PARTIAL_COPY + * + * NOTES + * The type of data returned in Buffer is indicated by the value of the Class parameter. + */ +DWORD WINAPI GetOwnerModuleFromTcpEntry( PMIB_TCPROW_OWNER_MODULE pTcpEntry, TCPIP_OWNER_MODULE_INFO_CLASS Class, PVOID Buffer, PDWORD pdwSize) +{ + DWORD ret = NO_ERROR; + UNIMPLEMENTED; + return ret; +} + + /****************************************************************** * GetPerAdapterInfo (IPHLPAPI.@) * diff --git a/reactos/include/psdk/iphlpapi.h b/reactos/include/psdk/iphlpapi.h index 9637194b5d2..56c32fdc087 100644 --- a/reactos/include/psdk/iphlpapi.h +++ b/reactos/include/psdk/iphlpapi.h @@ -35,6 +35,7 @@ DWORD WINAPI GetIpStatistics(PMIB_IPSTATS); DWORD WINAPI GetIpStatisticsEx(PMIB_IPSTATS,DWORD); DWORD WINAPI GetNetworkParams(PFIXED_INFO,PULONG); DWORD WINAPI GetNumberOfInterfaces(PDWORD); +DWORD WINAPI GetOwnerModuleFromTcpEntry(PMIB_TCPROW_OWNER_MODULE,TCPIP_OWNER_MODULE_INFO_CLASS,PVOID,PDWORD); DWORD WINAPI GetPerAdapterInfo(ULONG,PIP_PER_ADAPTER_INFO, PULONG); BOOL WINAPI GetRTTAndHopCount(IPAddr,PULONG,ULONG,PULONG); DWORD WINAPI GetTcpStatistics(PMIB_TCPSTATS); diff --git a/reactos/include/psdk/iprtrmib.h b/reactos/include/psdk/iprtrmib.h index 6f182944fce..179a7938fde 100644 --- a/reactos/include/psdk/iprtrmib.h +++ b/reactos/include/psdk/iprtrmib.h @@ -25,6 +25,9 @@ #define MAXLEN_IFDESCR 256 #define MAXLEN_PHYSADDR 8 +//It should be 16 according to Lei Shen blog (http://www.mychinaworks.com/blog/lshen/2008/04/16/220/ +#define TCPIP_OWNING_MODULE_SIZE 16 + typedef struct _MIB_IFROW { WCHAR wszName[MAX_INTERFACE_NAME_LEN]; @@ -286,6 +289,20 @@ typedef struct _MIB_IPNETTABLE MIB_IPNETROW table[1]; } MIB_IPNETTABLE, *PMIB_IPNETTABLE; +typedef struct _MIB_TCPROW_OWNER_MODULE { + DWORD dwState; + DWORD dwLocalAddr; + DWORD dwLocalPort; + DWORD dwRemoteAddr; + DWORD dwRemotePort; + DWORD dwOwningPid; + LARGE_INTEGER liCreateTimestamp; + ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE]; +} MIB_TCPROW_OWNER_MODULE, *PMIB_TCPROW_OWNER_MODULE; + +typedef enum { + TCPIP_OWNER_MODULE_INFO_BASIC +} TCPIP_OWNER_MODULE_INFO_CLASS, *PTCPIP_OWNER_MODULE_INFO_CLASS; typedef enum { TCP_TABLE_BASIC_LISTENER,