Mercurial > games > semicongine
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/fuhtark_test/include/winapi/traffic.h Wed Nov 26 21:36:48 2025 +0700 @@ -0,0 +1,196 @@ +/** + * This file has no copyright assigned and is placed in the Public Domain. + * This file is part of the w64 mingw-runtime package. + * No warranty is given; refer to the file DISCLAIMER within this package. + */ +#ifndef __TRAFFIC_H +#define __TRAFFIC_H + +#include <ntddndis.h> + +#ifdef __cplusplus +extern "C" { +#endif + +#define CURRENT_TCI_VERSION 0x0002 + +#define TC_NOTIFY_IFC_UP 1 +#define TC_NOTIFY_IFC_CLOSE 2 +#define TC_NOTIFY_IFC_CHANGE 3 +#define TC_NOTIFY_PARAM_CHANGED 4 +#define TC_NOTIFY_FLOW_CLOSE 5 +#define TC_INVALID_HANDLE ((HANDLE)0) + +#define MAX_STRING_LENGTH 256 + +#ifndef CALLBACK +#define CALLBACK __stdcall +#endif + +#ifndef WINAPI +#define WINAPI __stdcall +#endif + +#ifndef APIENTRY +#define APIENTRY WINAPI +#endif + + typedef VOID (CALLBACK *TCI_NOTIFY_HANDLER)(HANDLE ClRegCtx,HANDLE ClIfcCtx,ULONG Event,HANDLE SubCode,ULONG BufSize,PVOID Buffer); + typedef VOID (CALLBACK *TCI_ADD_FLOW_COMPLETE_HANDLER)(HANDLE ClFlowCtx,ULONG Status); + typedef VOID (CALLBACK *TCI_MOD_FLOW_COMPLETE_HANDLER)(HANDLE ClFlowCtx,ULONG Status); + typedef VOID (CALLBACK *TCI_DEL_FLOW_COMPLETE_HANDLER)(HANDLE ClFlowCtx,ULONG Status); + + typedef struct _TCI_CLIENT_FUNC_LIST { + TCI_NOTIFY_HANDLER ClNotifyHandler; + TCI_ADD_FLOW_COMPLETE_HANDLER ClAddFlowCompleteHandler; + TCI_MOD_FLOW_COMPLETE_HANDLER ClModifyFlowCompleteHandler; + TCI_DEL_FLOW_COMPLETE_HANDLER ClDeleteFlowCompleteHandler; + } TCI_CLIENT_FUNC_LIST,*PTCI_CLIENT_FUNC_LIST; + + typedef struct _ADDRESS_LIST_DESCRIPTOR { + ULONG MediaType; + NETWORK_ADDRESS_LIST AddressList; + } ADDRESS_LIST_DESCRIPTOR,*PADDRESS_LIST_DESCRIPTOR; + + typedef struct _TC_IFC_DESCRIPTOR { + ULONG Length; + LPWSTR pInterfaceName; + LPWSTR pInterfaceID; + ADDRESS_LIST_DESCRIPTOR AddressListDesc; + } TC_IFC_DESCRIPTOR,*PTC_IFC_DESCRIPTOR; + + typedef struct _TC_SUPPORTED_INFO_BUFFER { + USHORT InstanceIDLength; + WCHAR InstanceID[MAX_STRING_LENGTH]; + ADDRESS_LIST_DESCRIPTOR AddrListDesc; + } TC_SUPPORTED_INFO_BUFFER,*PTC_SUPPORTED_INFO_BUFFER; + + typedef struct _TC_GEN_FILTER { + USHORT AddressType; + ULONG PatternSize; + PVOID Pattern; + PVOID Mask; + } TC_GEN_FILTER,*PTC_GEN_FILTER; + + typedef struct _TC_GEN_FLOW { + FLOWSPEC SendingFlowspec; + FLOWSPEC ReceivingFlowspec; + ULONG TcObjectsLength; + QOS_OBJECT_HDR TcObjects[1]; + } TC_GEN_FLOW,*PTC_GEN_FLOW; + + typedef struct _IP_PATTERN { + ULONG Reserved1; + ULONG Reserved2; + ULONG SrcAddr; + ULONG DstAddr; + union { + struct { USHORT s_srcport,s_dstport; } S_un_ports; + struct { UCHAR s_type,s_code; USHORT filler; } S_un_icmp; + ULONG S_Spi; + } S_un; + UCHAR ProtocolId; + UCHAR Reserved3[3]; + } IP_PATTERN,*PIP_PATTERN; + +#define tcSrcPort S_un.S_un_ports.s_srcport +#define tcDstPort S_un.S_un_ports.s_dstport +#define tcIcmpType S_un.S_un_icmp.s_type +#define tcIcmpCode S_un.S_un_icmp.s_code +#define tcSpi S_un.S_Spi + + typedef struct _IPX_PATTERN { + struct { + ULONG NetworkAddress; + UCHAR NodeAddress[6]; + USHORT Socket; + } Src,Dest; + } IPX_PATTERN,*PIPX_PATTERN; + + typedef struct _ENUMERATION_BUFFER { + ULONG Length; + ULONG OwnerProcessId; + USHORT FlowNameLength; + WCHAR FlowName[MAX_STRING_LENGTH]; + PTC_GEN_FLOW pFlow; + ULONG NumberOfFilters; + TC_GEN_FILTER GenericFilter[1]; + } ENUMERATION_BUFFER,*PENUMERATION_BUFFER; + +#define QOS_TRAFFIC_GENERAL_ID_BASE 4000 +#define QOS_OBJECT_DS_CLASS (0x00000001 + QOS_TRAFFIC_GENERAL_ID_BASE) +#define QOS_OBJECT_TRAFFIC_CLASS (0x00000002 + QOS_TRAFFIC_GENERAL_ID_BASE) +#define QOS_OBJECT_DIFFSERV (0x00000003 + QOS_TRAFFIC_GENERAL_ID_BASE) +#define QOS_OBJECT_TCP_TRAFFIC (0x00000004 + QOS_TRAFFIC_GENERAL_ID_BASE) +#define QOS_OBJECT_FRIENDLY_NAME (0x00000005 + QOS_TRAFFIC_GENERAL_ID_BASE) + + typedef struct _QOS_FRIENDLY_NAME { + QOS_OBJECT_HDR ObjectHdr; + WCHAR FriendlyName[MAX_STRING_LENGTH]; + } QOS_FRIENDLY_NAME,*LPQOS_FRIENDLY_NAME; + + typedef struct _QOS_TRAFFIC_CLASS { + QOS_OBJECT_HDR ObjectHdr; + ULONG TrafficClass; + } QOS_TRAFFIC_CLASS,*LPQOS_TRAFFIC_CLASS; + + typedef struct _QOS_DS_CLASS { + QOS_OBJECT_HDR ObjectHdr; + ULONG DSField; + } QOS_DS_CLASS,*LPQOS_DS_CLASS; + + typedef struct _QOS_DIFFSERV { + QOS_OBJECT_HDR ObjectHdr; + ULONG DSFieldCount; + UCHAR DiffservRule[1]; + } QOS_DIFFSERV,*LPQOS_DIFFSERV; + + typedef struct _QOS_DIFFSERV_RULE { + UCHAR InboundDSField; + UCHAR ConformingOutboundDSField; + UCHAR NonConformingOutboundDSField; + UCHAR ConformingUserPriority; + UCHAR NonConformingUserPriority; + } QOS_DIFFSERV_RULE,*LPQOS_DIFFSERV_RULE; + + typedef struct _QOS_TCP_TRAFFIC { + QOS_OBJECT_HDR ObjectHdr; + } QOS_TCP_TRAFFIC,*LPQOS_TCP_TRAFFIC; + +#ifdef UNICODE +#define TcOpenInterface TcOpenInterfaceW +#define TcQueryFlow TcQueryFlowW +#define TcSetFlow TcSetFlowW +#define TcGetFlowName TcGetFlowNameW +#else +#define TcOpenInterface TcOpenInterfaceA +#define TcQueryFlow TcQueryFlowA +#define TcSetFlow TcSetFlowA +#define TcGetFlowName TcGetFlowNameA +#endif + + ULONG WINAPI TcRegisterClient(ULONG TciVersion,HANDLE ClRegCtx,PTCI_CLIENT_FUNC_LIST ClientHandlerList,PHANDLE pClientHandle); + ULONG WINAPI TcEnumerateInterfaces(HANDLE ClientHandle,PULONG pBufferSize,PTC_IFC_DESCRIPTOR InterfaceBuffer); + ULONG WINAPI TcOpenInterfaceA(LPSTR pInterfaceName,HANDLE ClientHandle,HANDLE ClIfcCtx,PHANDLE pIfcHandle); + ULONG WINAPI TcOpenInterfaceW(LPWSTR pInterfaceName,HANDLE ClientHandle,HANDLE ClIfcCtx,PHANDLE pIfcHandle); + ULONG WINAPI TcCloseInterface(HANDLE IfcHandle); + ULONG WINAPI TcQueryInterface(HANDLE IfcHandle,LPGUID pGuidParam,BOOLEAN NotifyChange,PULONG pBufferSize,PVOID Buffer); + ULONG WINAPI TcSetInterface(HANDLE IfcHandle,LPGUID pGuidParam,ULONG BufferSize,PVOID Buffer); + ULONG WINAPI TcQueryFlowA(LPSTR pFlowName,LPGUID pGuidParam,PULONG pBufferSize,PVOID Buffer); + ULONG WINAPI TcQueryFlowW(LPWSTR pFlowName,LPGUID pGuidParam,PULONG pBufferSize,PVOID Buffer); + ULONG WINAPI TcSetFlowA(LPSTR pFlowName,LPGUID pGuidParam,ULONG BufferSize,PVOID Buffer); + ULONG WINAPI TcSetFlowW(LPWSTR pFlowName,LPGUID pGuidParam,ULONG BufferSize,PVOID Buffer); + ULONG WINAPI TcAddFlow(HANDLE IfcHandle,HANDLE ClFlowCtx,ULONG Flags,PTC_GEN_FLOW pGenericFlow,PHANDLE pFlowHandle); + ULONG WINAPI TcGetFlowNameA(HANDLE FlowHandle,ULONG StrSize,LPSTR pFlowName); + ULONG WINAPI TcGetFlowNameW(HANDLE FlowHandle,ULONG StrSize,LPWSTR pFlowName); + ULONG WINAPI TcModifyFlow(HANDLE FlowHandle,PTC_GEN_FLOW pGenericFlow); + ULONG WINAPI TcAddFilter(HANDLE FlowHandle,PTC_GEN_FILTER pGenericFilter,PHANDLE pFilterHandle); + ULONG WINAPI TcDeregisterClient(HANDLE ClientHandle); + ULONG WINAPI TcDeleteFlow(HANDLE FlowHandle); + ULONG WINAPI TcDeleteFilter(HANDLE FilterHandle); + ULONG WINAPI TcEnumerateFlows(HANDLE IfcHandle,PHANDLE pEnumHandle,PULONG pFlowCount,PULONG pBufSize,PENUMERATION_BUFFER Buffer); + +#ifdef __cplusplus +} +#endif +#endif
