Reactos
at master 186 lines 5.5 kB view raw
1/* 2 * PROJECT: ReactOS PSDK 3 * LICENSE: MIT (https://spdx.org/licenses/MIT) 4 * PURPOSE: UDPMIB Header 5 * COPYRIGHT: Copyright 2025 Carl Bialorucki <carl.bialorucki@reactos.org> 6 */ 7 8#ifndef _UDPMIB_ 9#define _UDPMIB_ 10 11#define TCPIP_OWNING_MODULE_SIZE 16 12 13typedef struct _MIB_UDPROW { 14 DWORD dwLocalAddr; 15 DWORD dwLocalPort; 16} MIB_UDPROW, *PMIB_UDPROW; 17 18typedef struct _MIB_UDPTABLE { 19 DWORD dwNumEntries; 20 MIB_UDPROW table[1]; 21} MIB_UDPTABLE, *PMIB_UDPTABLE; 22 23#define SIZEOF_UDPTABLE(x) \ 24 (FIELD_OFFSET(MIB_UDPTABLE, table[0]) + ((x) * sizeof(MIB_UDPROW)) + ALIGN_SIZE) 25 26typedef struct _MIB_UDPROW_OWNER_PID { 27 DWORD dwLocalAddr; 28 DWORD dwLocalPort; 29 DWORD dwOwningPid; 30} MIB_UDPROW_OWNER_PID, *PMIB_UDPROW_OWNER_PID; 31 32typedef struct _MIB_UDPTABLE_OWNER_PID 33{ 34 DWORD dwNumEntries; 35 MIB_UDPROW_OWNER_PID table[1]; 36} MIB_UDPTABLE_OWNER_PID, *PMIB_UDPTABLE_OWNER_PID; 37 38#define SIZEOF_UDPTABLE_OWNER_PID(x) \ 39 (FIELD_OFFSET(MIB_UDPTABLE_OWNER_PID, table[0]) + ((x) * sizeof(MIB_UDPROW_OWNER_PID)) + ALIGN_SIZE) 40 41typedef struct _MIB_UDPROW_OWNER_MODULE { 42 DWORD dwLocalAddr; 43 DWORD dwLocalPort; 44 DWORD dwOwningPid; 45 LARGE_INTEGER liCreateTimestamp; 46 union { 47 struct { 48 int SpecificPortBind : 1; 49 }; 50 int dwFlags; 51 }; 52 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE]; 53} MIB_UDPROW_OWNER_MODULE, *PMIB_UDPROW_OWNER_MODULE; 54 55typedef struct _MIB_UDPTABLE_OWNER_MODULE { 56 DWORD dwNumEntries; 57 MIB_UDPROW_OWNER_MODULE table[1]; 58} MIB_UDPTABLE_OWNER_MODULE, *PMIB_UDPTABLE_OWNER_MODULE; 59 60#define SIZEOF_UDPTABLE_OWNER_MODULE(x) \ 61 (FIELD_OFFSET(MIB_UDPTABLE_OWNER_MODULE, table[0]) + ((x) * sizeof(MIB_UDPROW_OWNER_MODULE)) + ALIGN_SIZE) 62 63typedef struct _MIB_UDPROW2 { 64 DWORD dwLocalAddr; 65 DWORD dwLocalPort; 66 DWORD dwOwningPid; 67 LARGE_INTEGER liCreateTimestamp; 68 union { 69 struct { 70 int SpecificPortBind : 1; 71 }; 72 int dwFlags; 73 }; 74 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE]; 75 DWORD dwRemoteAddr; 76 DWORD dwRemotePort; 77} MIB_UDPROW2, *PMIB_UDPROW2; 78 79typedef struct _MIB_UDPTABLE2 { 80 DWORD dwNumEntries; 81 MIB_UDPROW2 table[1]; 82} MIB_UDPTABLE2, *PMIB_UDPTABLE2; 83 84#define SIZEOF_UDPTABLE2(x) \ 85 (FIELD_OFFSET(MIB_UDPTABLE2, table[0]) + ((x) * sizeof(MIB_UDPROW2)) + ALIGN_SIZE) 86 87typedef struct _MIB_UDPSTATS { 88 DWORD dwInDatagrams; 89 DWORD dwNoPorts; 90 DWORD dwInErrors; 91 DWORD dwOutDatagrams; 92 DWORD dwNumAddrs; 93} MIB_UDPSTATS,*PMIB_UDPSTATS; 94 95#if (NTDDI_VERSION >= NTDDI_WIN10_RS3) 96typedef struct _MIB_UDPSTATS2 { 97 DWORD64 dw64InDatagrams; 98 DWORD dwNoPorts; 99 DWORD dwInErrors; 100 DWORD64 dw64OutDatagrams; 101 DWORD dwNumAddrs; 102} MIB_UDPSTATS2, *PMIB_UDPSTATS2; 103#endif // (NTDDI_VERSION >= NTDDI_WIN10_RS3) 104 105#ifdef _WS2IPDEF_ 106typedef struct _MIB_UDP6ROW { 107 IN6_ADDR dwLocalAddr; 108 DWORD dwLocalScopeId; 109 DWORD dwLocalPort; 110} MIB_UDP6ROW, *PMIB_UDP6ROW; 111 112typedef struct _MIB_UDP6TABLE { 113 DWORD dwNumEntries; 114 MIB_UDP6ROW table[1]; 115} MIB_UDP6TABLE, *PMIB_UDP6TABLE; 116 117#define SIZEOF_UDP6TABLE(X) (FIELD_OFFSET(MIB_UDP6TABLE, table[0]) + \ 118 ((X) * sizeof(MIB_UDP6ROW)) + ALIGN_SIZE) 119 120typedef struct _MIB_UDP6ROW_OWNER_PID { 121 UCHAR ucLocalAddr[16]; 122 DWORD dwLocalScopeId; 123 DWORD dwLocalPort; 124 DWORD dwOwningPid; 125} MIB_UDP6ROW_OWNER_PID, *PMIB_UDP6ROW_OWNER_PID; 126 127typedef struct _MIB_UDP6TABLE_OWNER_PID { 128 DWORD dwNumEntries; 129 _Field_size_(dwNumEntries) 130 MIB_UDP6ROW_OWNER_PID table[1]; 131} MIB_UDP6TABLE_OWNER_PID, *PMIB_UDP6TABLE_OWNER_PID; 132 133#define SIZEOF_UDP6TABLE_OWNER_PID(x) \ 134 (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_PID, table[0]) + ((x) * sizeof(MIB_UDP6ROW_OWNER_PID)) + ALIGN_SIZE) 135 136typedef struct _MIB_UDP6ROW_OWNER_MODULE { 137 UCHAR ucLocalAddr[16]; 138 DWORD dwLocalScopeId; 139 DWORD dwLocalPort; 140 DWORD dwOwningPid; 141 LARGE_INTEGER liCreateTimestamp; 142 union { 143 struct { 144 int SpecificPortBind : 1; 145 }; 146 int dwFlags; 147 }; 148 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE]; 149} MIB_UDP6ROW_OWNER_MODULE, *PMIB_UDP6ROW_OWNER_MODULE; 150 151typedef struct _MIB_UDP6TABLE_OWNER_MODULE { 152 DWORD dwNumEntries; 153 MIB_UDP6ROW_OWNER_MODULE table[1]; 154} MIB_UDP6TABLE_OWNER_MODULE, *PMIB_UDP6TABLE_OWNER_MODULE; 155 156#define SIZEOF_UDP6TABLE_OWNER_MODULE(x) \ 157 (FIELD_OFFSET(MIB_UDP6TABLE_OWNER_MODULE, table[0]) + ((x) * sizeof(MIB_UDP6ROW_OWNER_MODULE)) + ALIGN_SIZE) 158 159typedef struct _MIB_UDP6ROW2 { 160 UCHAR ucLocalAddr[16]; 161 DWORD dwLocalScopeId; 162 DWORD dwLocalPort; 163 DWORD dwOwningPid; 164 LARGE_INTEGER liCreateTimestamp; 165 union { 166 struct { 167 int SpecificPortBind : 1; 168 }; 169 int dwFlags; 170 }; 171 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE]; 172 UCHAR ucRemoteAddr[16]; 173 DWORD dwRemoteScopeId; 174 DWORD dwRemotePort; 175} MIB_UDP6ROW2, *PMIB_UDP6ROW2; 176 177typedef struct _MIB_UDP6TABLE2 { 178 DWORD dwNumEntries; 179 MIB_UDP6ROW2 table[1]; 180} MIB_UDP6TABLE2, *PMIB_UDP6TABLE2; 181 182#define SIZEOF_UDP6TABLE2(x) \ 183 (FIELD_OFFSET(MIB_UDP6TABLE2, table[0]) + ((x) * sizeof(MIB_UDP6ROW2)) + ALIGN_SIZE) 184#endif // _WS2IPDEF_ 185 186#endif // _UDPMIB_