comparison fuhtark_test/include/winapi/traffic.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
comparison
equal deleted inserted replaced
1499:1f58458b7ef7 1500:91c8c3b7cbf0
1 /**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER within this package.
5 */
6 #ifndef __TRAFFIC_H
7 #define __TRAFFIC_H
8
9 #include <ntddndis.h>
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 #define CURRENT_TCI_VERSION 0x0002
16
17 #define TC_NOTIFY_IFC_UP 1
18 #define TC_NOTIFY_IFC_CLOSE 2
19 #define TC_NOTIFY_IFC_CHANGE 3
20 #define TC_NOTIFY_PARAM_CHANGED 4
21 #define TC_NOTIFY_FLOW_CLOSE 5
22 #define TC_INVALID_HANDLE ((HANDLE)0)
23
24 #define MAX_STRING_LENGTH 256
25
26 #ifndef CALLBACK
27 #define CALLBACK __stdcall
28 #endif
29
30 #ifndef WINAPI
31 #define WINAPI __stdcall
32 #endif
33
34 #ifndef APIENTRY
35 #define APIENTRY WINAPI
36 #endif
37
38 typedef VOID (CALLBACK *TCI_NOTIFY_HANDLER)(HANDLE ClRegCtx,HANDLE ClIfcCtx,ULONG Event,HANDLE SubCode,ULONG BufSize,PVOID Buffer);
39 typedef VOID (CALLBACK *TCI_ADD_FLOW_COMPLETE_HANDLER)(HANDLE ClFlowCtx,ULONG Status);
40 typedef VOID (CALLBACK *TCI_MOD_FLOW_COMPLETE_HANDLER)(HANDLE ClFlowCtx,ULONG Status);
41 typedef VOID (CALLBACK *TCI_DEL_FLOW_COMPLETE_HANDLER)(HANDLE ClFlowCtx,ULONG Status);
42
43 typedef struct _TCI_CLIENT_FUNC_LIST {
44 TCI_NOTIFY_HANDLER ClNotifyHandler;
45 TCI_ADD_FLOW_COMPLETE_HANDLER ClAddFlowCompleteHandler;
46 TCI_MOD_FLOW_COMPLETE_HANDLER ClModifyFlowCompleteHandler;
47 TCI_DEL_FLOW_COMPLETE_HANDLER ClDeleteFlowCompleteHandler;
48 } TCI_CLIENT_FUNC_LIST,*PTCI_CLIENT_FUNC_LIST;
49
50 typedef struct _ADDRESS_LIST_DESCRIPTOR {
51 ULONG MediaType;
52 NETWORK_ADDRESS_LIST AddressList;
53 } ADDRESS_LIST_DESCRIPTOR,*PADDRESS_LIST_DESCRIPTOR;
54
55 typedef struct _TC_IFC_DESCRIPTOR {
56 ULONG Length;
57 LPWSTR pInterfaceName;
58 LPWSTR pInterfaceID;
59 ADDRESS_LIST_DESCRIPTOR AddressListDesc;
60 } TC_IFC_DESCRIPTOR,*PTC_IFC_DESCRIPTOR;
61
62 typedef struct _TC_SUPPORTED_INFO_BUFFER {
63 USHORT InstanceIDLength;
64 WCHAR InstanceID[MAX_STRING_LENGTH];
65 ADDRESS_LIST_DESCRIPTOR AddrListDesc;
66 } TC_SUPPORTED_INFO_BUFFER,*PTC_SUPPORTED_INFO_BUFFER;
67
68 typedef struct _TC_GEN_FILTER {
69 USHORT AddressType;
70 ULONG PatternSize;
71 PVOID Pattern;
72 PVOID Mask;
73 } TC_GEN_FILTER,*PTC_GEN_FILTER;
74
75 typedef struct _TC_GEN_FLOW {
76 FLOWSPEC SendingFlowspec;
77 FLOWSPEC ReceivingFlowspec;
78 ULONG TcObjectsLength;
79 QOS_OBJECT_HDR TcObjects[1];
80 } TC_GEN_FLOW,*PTC_GEN_FLOW;
81
82 typedef struct _IP_PATTERN {
83 ULONG Reserved1;
84 ULONG Reserved2;
85 ULONG SrcAddr;
86 ULONG DstAddr;
87 union {
88 struct { USHORT s_srcport,s_dstport; } S_un_ports;
89 struct { UCHAR s_type,s_code; USHORT filler; } S_un_icmp;
90 ULONG S_Spi;
91 } S_un;
92 UCHAR ProtocolId;
93 UCHAR Reserved3[3];
94 } IP_PATTERN,*PIP_PATTERN;
95
96 #define tcSrcPort S_un.S_un_ports.s_srcport
97 #define tcDstPort S_un.S_un_ports.s_dstport
98 #define tcIcmpType S_un.S_un_icmp.s_type
99 #define tcIcmpCode S_un.S_un_icmp.s_code
100 #define tcSpi S_un.S_Spi
101
102 typedef struct _IPX_PATTERN {
103 struct {
104 ULONG NetworkAddress;
105 UCHAR NodeAddress[6];
106 USHORT Socket;
107 } Src,Dest;
108 } IPX_PATTERN,*PIPX_PATTERN;
109
110 typedef struct _ENUMERATION_BUFFER {
111 ULONG Length;
112 ULONG OwnerProcessId;
113 USHORT FlowNameLength;
114 WCHAR FlowName[MAX_STRING_LENGTH];
115 PTC_GEN_FLOW pFlow;
116 ULONG NumberOfFilters;
117 TC_GEN_FILTER GenericFilter[1];
118 } ENUMERATION_BUFFER,*PENUMERATION_BUFFER;
119
120 #define QOS_TRAFFIC_GENERAL_ID_BASE 4000
121 #define QOS_OBJECT_DS_CLASS (0x00000001 + QOS_TRAFFIC_GENERAL_ID_BASE)
122 #define QOS_OBJECT_TRAFFIC_CLASS (0x00000002 + QOS_TRAFFIC_GENERAL_ID_BASE)
123 #define QOS_OBJECT_DIFFSERV (0x00000003 + QOS_TRAFFIC_GENERAL_ID_BASE)
124 #define QOS_OBJECT_TCP_TRAFFIC (0x00000004 + QOS_TRAFFIC_GENERAL_ID_BASE)
125 #define QOS_OBJECT_FRIENDLY_NAME (0x00000005 + QOS_TRAFFIC_GENERAL_ID_BASE)
126
127 typedef struct _QOS_FRIENDLY_NAME {
128 QOS_OBJECT_HDR ObjectHdr;
129 WCHAR FriendlyName[MAX_STRING_LENGTH];
130 } QOS_FRIENDLY_NAME,*LPQOS_FRIENDLY_NAME;
131
132 typedef struct _QOS_TRAFFIC_CLASS {
133 QOS_OBJECT_HDR ObjectHdr;
134 ULONG TrafficClass;
135 } QOS_TRAFFIC_CLASS,*LPQOS_TRAFFIC_CLASS;
136
137 typedef struct _QOS_DS_CLASS {
138 QOS_OBJECT_HDR ObjectHdr;
139 ULONG DSField;
140 } QOS_DS_CLASS,*LPQOS_DS_CLASS;
141
142 typedef struct _QOS_DIFFSERV {
143 QOS_OBJECT_HDR ObjectHdr;
144 ULONG DSFieldCount;
145 UCHAR DiffservRule[1];
146 } QOS_DIFFSERV,*LPQOS_DIFFSERV;
147
148 typedef struct _QOS_DIFFSERV_RULE {
149 UCHAR InboundDSField;
150 UCHAR ConformingOutboundDSField;
151 UCHAR NonConformingOutboundDSField;
152 UCHAR ConformingUserPriority;
153 UCHAR NonConformingUserPriority;
154 } QOS_DIFFSERV_RULE,*LPQOS_DIFFSERV_RULE;
155
156 typedef struct _QOS_TCP_TRAFFIC {
157 QOS_OBJECT_HDR ObjectHdr;
158 } QOS_TCP_TRAFFIC,*LPQOS_TCP_TRAFFIC;
159
160 #ifdef UNICODE
161 #define TcOpenInterface TcOpenInterfaceW
162 #define TcQueryFlow TcQueryFlowW
163 #define TcSetFlow TcSetFlowW
164 #define TcGetFlowName TcGetFlowNameW
165 #else
166 #define TcOpenInterface TcOpenInterfaceA
167 #define TcQueryFlow TcQueryFlowA
168 #define TcSetFlow TcSetFlowA
169 #define TcGetFlowName TcGetFlowNameA
170 #endif
171
172 ULONG WINAPI TcRegisterClient(ULONG TciVersion,HANDLE ClRegCtx,PTCI_CLIENT_FUNC_LIST ClientHandlerList,PHANDLE pClientHandle);
173 ULONG WINAPI TcEnumerateInterfaces(HANDLE ClientHandle,PULONG pBufferSize,PTC_IFC_DESCRIPTOR InterfaceBuffer);
174 ULONG WINAPI TcOpenInterfaceA(LPSTR pInterfaceName,HANDLE ClientHandle,HANDLE ClIfcCtx,PHANDLE pIfcHandle);
175 ULONG WINAPI TcOpenInterfaceW(LPWSTR pInterfaceName,HANDLE ClientHandle,HANDLE ClIfcCtx,PHANDLE pIfcHandle);
176 ULONG WINAPI TcCloseInterface(HANDLE IfcHandle);
177 ULONG WINAPI TcQueryInterface(HANDLE IfcHandle,LPGUID pGuidParam,BOOLEAN NotifyChange,PULONG pBufferSize,PVOID Buffer);
178 ULONG WINAPI TcSetInterface(HANDLE IfcHandle,LPGUID pGuidParam,ULONG BufferSize,PVOID Buffer);
179 ULONG WINAPI TcQueryFlowA(LPSTR pFlowName,LPGUID pGuidParam,PULONG pBufferSize,PVOID Buffer);
180 ULONG WINAPI TcQueryFlowW(LPWSTR pFlowName,LPGUID pGuidParam,PULONG pBufferSize,PVOID Buffer);
181 ULONG WINAPI TcSetFlowA(LPSTR pFlowName,LPGUID pGuidParam,ULONG BufferSize,PVOID Buffer);
182 ULONG WINAPI TcSetFlowW(LPWSTR pFlowName,LPGUID pGuidParam,ULONG BufferSize,PVOID Buffer);
183 ULONG WINAPI TcAddFlow(HANDLE IfcHandle,HANDLE ClFlowCtx,ULONG Flags,PTC_GEN_FLOW pGenericFlow,PHANDLE pFlowHandle);
184 ULONG WINAPI TcGetFlowNameA(HANDLE FlowHandle,ULONG StrSize,LPSTR pFlowName);
185 ULONG WINAPI TcGetFlowNameW(HANDLE FlowHandle,ULONG StrSize,LPWSTR pFlowName);
186 ULONG WINAPI TcModifyFlow(HANDLE FlowHandle,PTC_GEN_FLOW pGenericFlow);
187 ULONG WINAPI TcAddFilter(HANDLE FlowHandle,PTC_GEN_FILTER pGenericFilter,PHANDLE pFilterHandle);
188 ULONG WINAPI TcDeregisterClient(HANDLE ClientHandle);
189 ULONG WINAPI TcDeleteFlow(HANDLE FlowHandle);
190 ULONG WINAPI TcDeleteFilter(HANDLE FilterHandle);
191 ULONG WINAPI TcEnumerateFlows(HANDLE IfcHandle,PHANDLE pEnumHandle,PULONG pFlowCount,PULONG pBufSize,PENUMERATION_BUFFER Buffer);
192
193 #ifdef __cplusplus
194 }
195 #endif
196 #endif