//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (485)
//--------------------------------------------------------------------------------
pub const QOS_MAX_OBJECT_STRING_LENGTH = @as(u32, 256);
pub const QOS_TRAFFIC_GENERAL_ID_BASE = @as(u32, 4000);
pub const SERVICETYPE_NOTRAFFIC = @as(u32, 0);
pub const SERVICETYPE_BESTEFFORT = @as(u32, 1);
pub const SERVICETYPE_CONTROLLEDLOAD = @as(u32, 2);
pub const SERVICETYPE_GUARANTEED = @as(u32, 3);
pub const SERVICETYPE_NETWORK_UNAVAILABLE = @as(u32, 4);
pub const SERVICETYPE_GENERAL_INFORMATION = @as(u32, 5);
pub const SERVICETYPE_NOCHANGE = @as(u32, 6);
pub const SERVICETYPE_NONCONFORMING = @as(u32, 9);
pub const SERVICETYPE_NETWORK_CONTROL = @as(u32, 10);
pub const SERVICETYPE_QUALITATIVE = @as(u32, 13);
pub const SERVICE_BESTEFFORT = @as(u32, 2147549184);
pub const SERVICE_CONTROLLEDLOAD = @as(u32, 2147614720);
pub const SERVICE_GUARANTEED = @as(u32, 2147745792);
pub const SERVICE_QUALITATIVE = @as(u32, 2149580800);
pub const SERVICE_NO_TRAFFIC_CONTROL = @as(u32, 2164260864);
pub const SERVICE_NO_QOS_SIGNALING = @as(u32, 1073741824);
pub const QOS_NOT_SPECIFIED = @as(u32, 4294967295);
pub const POSITIVE_INFINITY_RATE = @as(u32, 4294967294);
pub const QOS_GENERAL_ID_BASE = @as(u32, 2000);
pub const TC_NONCONF_BORROW = @as(u32, 0);
pub const TC_NONCONF_SHAPE = @as(u32, 1);
pub const TC_NONCONF_DISCARD = @as(u32, 2);
pub const TC_NONCONF_BORROW_PLUS = @as(u32, 3);
pub const SESSFLG_E_Police = @as(u32, 1);
pub const Opt_Share_mask = @as(u32, 24);
pub const Opt_Distinct = @as(u32, 8);
pub const Opt_Shared = @as(u32, 16);
pub const Opt_SndSel_mask = @as(u32, 7);
pub const Opt_Wildcard = @as(u32, 1);
pub const Opt_Explicit = @as(u32, 2);
pub const ERROR_SPECF_InPlace = @as(u32, 1);
pub const ERROR_SPECF_NotGuilty = @as(u32, 2);
pub const ERR_FORWARD_OK = @as(u32, 32768);
pub const ERR_Usage_globl = @as(u32, 0);
pub const ERR_Usage_local = @as(u32, 16);
pub const ERR_Usage_serv = @as(u32, 17);
pub const ERR_global_mask = @as(u32, 4095);
pub const GENERAL_INFO = @as(u32, 1);
pub const GUARANTEED_SERV = @as(u32, 2);
pub const PREDICTIVE_SERV = @as(u32, 3);
pub const CONTROLLED_DELAY_SERV = @as(u32, 4);
pub const CONTROLLED_LOAD_SERV = @as(u32, 5);
pub const QUALITATIVE_SERV = @as(u32, 6);
pub const INTSERV_VERS_MASK = @as(u32, 240);
pub const INTSERV_VERSION0 = @as(u32, 0);
pub const ISSH_BREAK_BIT = @as(u32, 128);
pub const ISPH_FLG_INV = @as(u32, 128);
pub const RSVP_PATH = @as(u32, 1);
pub const RSVP_RESV = @as(u32, 2);
pub const RSVP_PATH_ERR = @as(u32, 3);
pub const RSVP_RESV_ERR = @as(u32, 4);
pub const RSVP_PATH_TEAR = @as(u32, 5);
pub const RSVP_RESV_TEAR = @as(u32, 6);
pub const RSVP_Err_NONE = @as(u32, 0);
pub const RSVP_Erv_Nonev = @as(u32, 0);
pub const RSVP_Err_ADMISSION = @as(u32, 1);
pub const RSVP_Erv_Other = @as(u32, 0);
pub const RSVP_Erv_DelayBnd = @as(u32, 1);
pub const RSVP_Erv_Bandwidth = @as(u32, 2);
pub const RSVP_Erv_MTU = @as(u32, 3);
pub const RSVP_Erv_Flow_Rate = @as(u32, 32769);
pub const RSVP_Erv_Bucket_szie = @as(u32, 32770);
pub const RSVP_Erv_Peak_Rate = @as(u32, 32771);
pub const RSVP_Erv_Min_Policied_size = @as(u32, 32772);
pub const RSVP_Err_POLICY = @as(u32, 2);
pub const POLICY_ERRV_NO_MORE_INFO = @as(u32, 1);
pub const POLICY_ERRV_UNSUPPORTED_CREDENTIAL_TYPE = @as(u32, 2);
pub const POLICY_ERRV_INSUFFICIENT_PRIVILEGES = @as(u32, 3);
pub const POLICY_ERRV_EXPIRED_CREDENTIALS = @as(u32, 4);
pub const POLICY_ERRV_IDENTITY_CHANGED = @as(u32, 5);
pub const POLICY_ERRV_UNKNOWN = @as(u32, 0);
pub const POLICY_ERRV_GLOBAL_DEF_FLOW_COUNT = @as(u32, 1);
pub const POLICY_ERRV_GLOBAL_GRP_FLOW_COUNT = @as(u32, 2);
pub const POLICY_ERRV_GLOBAL_USER_FLOW_COUNT = @as(u32, 3);
pub const POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_COUNT = @as(u32, 4);
pub const POLICY_ERRV_SUBNET_DEF_FLOW_COUNT = @as(u32, 5);
pub const POLICY_ERRV_SUBNET_GRP_FLOW_COUNT = @as(u32, 6);
pub const POLICY_ERRV_SUBNET_USER_FLOW_COUNT = @as(u32, 7);
pub const POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_COUNT = @as(u32, 8);
pub const POLICY_ERRV_GLOBAL_DEF_FLOW_DURATION = @as(u32, 9);
pub const POLICY_ERRV_GLOBAL_GRP_FLOW_DURATION = @as(u32, 10);
pub const POLICY_ERRV_GLOBAL_USER_FLOW_DURATION = @as(u32, 11);
pub const POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_DURATION = @as(u32, 12);
pub const POLICY_ERRV_SUBNET_DEF_FLOW_DURATION = @as(u32, 13);
pub const POLICY_ERRV_SUBNET_GRP_FLOW_DURATION = @as(u32, 14);
pub const POLICY_ERRV_SUBNET_USER_FLOW_DURATION = @as(u32, 15);
pub const POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_DURATION = @as(u32, 16);
pub const POLICY_ERRV_GLOBAL_DEF_FLOW_RATE = @as(u32, 17);
pub const POLICY_ERRV_GLOBAL_GRP_FLOW_RATE = @as(u32, 18);
pub const POLICY_ERRV_GLOBAL_USER_FLOW_RATE = @as(u32, 19);
pub const POLICY_ERRV_GLOBAL_UNAUTH_USER_FLOW_RATE = @as(u32, 20);
pub const POLICY_ERRV_SUBNET_DEF_FLOW_RATE = @as(u32, 21);
pub const POLICY_ERRV_SUBNET_GRP_FLOW_RATE = @as(u32, 22);
pub const POLICY_ERRV_SUBNET_USER_FLOW_RATE = @as(u32, 23);
pub const POLICY_ERRV_SUBNET_UNAUTH_USER_FLOW_RATE = @as(u32, 24);
pub const POLICY_ERRV_GLOBAL_DEF_PEAK_RATE = @as(u32, 25);
pub const POLICY_ERRV_GLOBAL_GRP_PEAK_RATE = @as(u32, 26);
pub const POLICY_ERRV_GLOBAL_USER_PEAK_RATE = @as(u32, 27);
pub const POLICY_ERRV_GLOBAL_UNAUTH_USER_PEAK_RATE = @as(u32, 28);
pub const POLICY_ERRV_SUBNET_DEF_PEAK_RATE = @as(u32, 29);
pub const POLICY_ERRV_SUBNET_GRP_PEAK_RATE = @as(u32, 30);
pub const POLICY_ERRV_SUBNET_USER_PEAK_RATE = @as(u32, 31);
pub const POLICY_ERRV_SUBNET_UNAUTH_USER_PEAK_RATE = @as(u32, 32);
pub const POLICY_ERRV_GLOBAL_DEF_SUM_FLOW_RATE = @as(u32, 33);
pub const POLICY_ERRV_GLOBAL_GRP_SUM_FLOW_RATE = @as(u32, 34);
pub const POLICY_ERRV_GLOBAL_USER_SUM_FLOW_RATE = @as(u32, 35);
pub const POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_FLOW_RATE = @as(u32, 36);
pub const POLICY_ERRV_SUBNET_DEF_SUM_FLOW_RATE = @as(u32, 37);
pub const POLICY_ERRV_SUBNET_GRP_SUM_FLOW_RATE = @as(u32, 38);
pub const POLICY_ERRV_SUBNET_USER_SUM_FLOW_RATE = @as(u32, 39);
pub const POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_FLOW_RATE = @as(u32, 40);
pub const POLICY_ERRV_GLOBAL_DEF_SUM_PEAK_RATE = @as(u32, 41);
pub const POLICY_ERRV_GLOBAL_GRP_SUM_PEAK_RATE = @as(u32, 42);
pub const POLICY_ERRV_GLOBAL_USER_SUM_PEAK_RATE = @as(u32, 43);
pub const POLICY_ERRV_GLOBAL_UNAUTH_USER_SUM_PEAK_RATE = @as(u32, 44);
pub const POLICY_ERRV_SUBNET_DEF_SUM_PEAK_RATE = @as(u32, 45);
pub const POLICY_ERRV_SUBNET_GRP_SUM_PEAK_RATE = @as(u32, 46);
pub const POLICY_ERRV_SUBNET_USER_SUM_PEAK_RATE = @as(u32, 47);
pub const POLICY_ERRV_SUBNET_UNAUTH_USER_SUM_PEAK_RATE = @as(u32, 48);
pub const POLICY_ERRV_UNKNOWN_USER = @as(u32, 49);
pub const POLICY_ERRV_NO_PRIVILEGES = @as(u32, 50);
pub const POLICY_ERRV_EXPIRED_USER_TOKEN = @as(u32, 51);
pub const POLICY_ERRV_NO_RESOURCES = @as(u32, 52);
pub const POLICY_ERRV_PRE_EMPTED = @as(u32, 53);
pub const POLICY_ERRV_USER_CHANGED = @as(u32, 54);
pub const POLICY_ERRV_NO_ACCEPTS = @as(u32, 55);
pub const POLICY_ERRV_NO_MEMORY = @as(u32, 56);
pub const POLICY_ERRV_CRAZY_FLOWSPEC = @as(u32, 57);
pub const RSVP_Err_NO_PATH = @as(u32, 3);
pub const RSVP_Err_NO_SENDER = @as(u32, 4);
pub const RSVP_Err_BAD_STYLE = @as(u32, 5);
pub const RSVP_Err_UNKNOWN_STYLE = @as(u32, 6);
pub const RSVP_Err_BAD_DSTPORT = @as(u32, 7);
pub const RSVP_Err_BAD_SNDPORT = @as(u32, 8);
pub const RSVP_Err_AMBIG_FILTER = @as(u32, 9);
pub const RSVP_Err_PREEMPTED = @as(u32, 12);
pub const RSVP_Err_UNKN_OBJ_CLASS = @as(u32, 13);
pub const RSVP_Err_UNKNOWN_CTYPE = @as(u32, 14);
pub const RSVP_Err_API_ERROR = @as(u32, 20);
pub const RSVP_Err_TC_ERROR = @as(u32, 21);
pub const RSVP_Erv_Conflict_Serv = @as(u32, 1);
pub const RSVP_Erv_No_Serv = @as(u32, 2);
pub const RSVP_Erv_Crazy_Flowspec = @as(u32, 3);
pub const RSVP_Erv_Crazy_Tspec = @as(u32, 4);
pub const RSVP_Err_TC_SYS_ERROR = @as(u32, 22);
pub const RSVP_Err_RSVP_SYS_ERROR = @as(u32, 23);
pub const RSVP_Erv_MEMORY = @as(u32, 1);
pub const RSVP_Erv_API = @as(u32, 2);
pub const LPM_PE_USER_IDENTITY = @as(u32, 2);
pub const LPM_PE_APP_IDENTITY = @as(u32, 3);
pub const ERROR_NO_MORE_INFO = @as(u32, 1);
pub const UNSUPPORTED_CREDENTIAL_TYPE = @as(u32, 2);
pub const INSUFFICIENT_PRIVILEGES = @as(u32, 3);
pub const EXPIRED_CREDENTIAL = @as(u32, 4);
pub const IDENTITY_CHANGED = @as(u32, 5);
pub const LPM_OK = @as(u32, 0);
pub const INV_LPM_HANDLE = @as(u32, 1);
pub const LPM_TIME_OUT = @as(u32, 2);
pub const INV_REQ_HANDLE = @as(u32, 3);
pub const DUP_RESULTS = @as(u32, 4);
pub const INV_RESULTS = @as(u32, 5);
pub const LPM_PE_ALL_TYPES = @as(u32, 0);
pub const LPM_API_VERSION_1 = @as(u32, 1);
pub const PCM_VERSION_1 = @as(u32, 1);
pub const LPV_RESERVED = @as(u32, 0);
pub const LPV_MIN_PRIORITY = @as(u32, 1);
pub const LPV_MAX_PRIORITY = @as(u32, 65280);
pub const LPV_DROP_MSG = @as(u32, 65533);
pub const LPV_DONT_CARE = @as(u32, 65534);
pub const LPV_REJECT = @as(u32, 65535);
pub const FORCE_IMMEDIATE_REFRESH = @as(u32, 1);
pub const LPM_RESULT_READY = @as(u32, 0);
pub const LPM_RESULT_DEFER = @as(u32, 1);
pub const RCVD_PATH_TEAR = @as(u32, 1);
pub const RCVD_RESV_TEAR = @as(u32, 2);
pub const ADM_CTRL_FAILED = @as(u32, 3);
pub const STATE_TIMEOUT = @as(u32, 4);
pub const FLOW_DURATION = @as(u32, 5);
pub const RESOURCES_ALLOCATED = @as(u32, 1);
pub const RESOURCES_MODIFIED = @as(u32, 2);
pub const CURRENT_TCI_VERSION = @as(u32, 2);
pub const TC_NOTIFY_IFC_UP = @as(u32, 1);
pub const TC_NOTIFY_IFC_CLOSE = @as(u32, 2);
pub const TC_NOTIFY_IFC_CHANGE = @as(u32, 3);
pub const TC_NOTIFY_PARAM_CHANGED = @as(u32, 4);
pub const TC_NOTIFY_FLOW_CLOSE = @as(u32, 5);
pub const MAX_STRING_LENGTH = @as(u32, 256);
pub const QOS_OUTGOING_DEFAULT_MINIMUM_BANDWIDTH = @as(u32, 4294967295);
pub const QOS_QUERYFLOW_FRESH = @as(u32, 1);
pub const QOS_NON_ADAPTIVE_FLOW = @as(u32, 2);
pub const RSVP_OBJECT_ID_BASE = @as(u32, 1000);
pub const RSVP_DEFAULT_STYLE = @as(u32, 0);
pub const RSVP_WILDCARD_STYLE = @as(u32, 1);
pub const RSVP_FIXED_FILTER_STYLE = @as(u32, 2);
pub const RSVP_SHARED_EXPLICIT_STYLE = @as(u32, 3);
pub const AD_FLAG_BREAK_BIT = @as(u32, 1);
pub const QOSSPBASE = @as(u32, 50000);
pub const ALLOWED_TO_SEND_DATA = @as(u32, 50001);
pub const ABLE_TO_RECV_RSVP = @as(u32, 50002);
pub const LINE_RATE = @as(u32, 50003);
pub const LOCAL_TRAFFIC_CONTROL = @as(u32, 50004);
pub const LOCAL_QOSABILITY = @as(u32, 50005);
pub const END_TO_END_QOSABILITY = @as(u32, 50006);
pub const INFO_NOT_AVAILABLE = @as(u32, 4294967295);
pub const ANY_DEST_ADDR = @as(u32, 4294967295);
pub const MODERATELY_DELAY_SENSITIVE = @as(u32, 4294967293);
pub const HIGHLY_DELAY_SENSITIVE = @as(u32, 4294967294);
pub const QOSSP_ERR_BASE = @as(u32, 56000);
pub const GQOS_NO_ERRORCODE = @as(u32, 0);
pub const GQOS_NO_ERRORVALUE = @as(u32, 0);
pub const GQOS_ERRORCODE_UNKNOWN = @as(u32, 4294967295);
pub const GQOS_ERRORVALUE_UNKNOWN = @as(u32, 4294967295);
pub const GQOS_NET_ADMISSION = @as(u32, 56100);
pub const GQOS_NET_POLICY = @as(u32, 56200);
pub const GQOS_RSVP = @as(u32, 56300);
pub const GQOS_API = @as(u32, 56400);
pub const GQOS_KERNEL_TC_SYS = @as(u32, 56500);
pub const GQOS_RSVP_SYS = @as(u32, 56600);
pub const GQOS_KERNEL_TC = @as(u32, 56700);
pub const PE_TYPE_APPID = @as(u32, 3);
pub const PE_ATTRIB_TYPE_POLICY_LOCATOR = @as(u32, 1);
pub const POLICY_LOCATOR_SUB_TYPE_ASCII_DN = @as(u32, 1);
pub const POLICY_LOCATOR_SUB_TYPE_UNICODE_DN = @as(u32, 2);
pub const POLICY_LOCATOR_SUB_TYPE_ASCII_DN_ENC = @as(u32, 3);
pub const POLICY_LOCATOR_SUB_TYPE_UNICODE_DN_ENC = @as(u32, 4);
pub const PE_ATTRIB_TYPE_CREDENTIAL = @as(u32, 2);
pub const CREDENTIAL_SUB_TYPE_ASCII_ID = @as(u32, 1);
pub const CREDENTIAL_SUB_TYPE_UNICODE_ID = @as(u32, 2);
pub const CREDENTIAL_SUB_TYPE_KERBEROS_TKT = @as(u32, 3);
pub const CREDENTIAL_SUB_TYPE_X509_V3_CERT = @as(u32, 4);
pub const CREDENTIAL_SUB_TYPE_PGP_CERT = @as(u32, 5);
pub const TCBASE = @as(u32, 7500);
pub const ERROR_INCOMPATIBLE_TCI_VERSION = @as(u32, 7501);
pub const ERROR_INVALID_SERVICE_TYPE = @as(u32, 7502);
pub const ERROR_INVALID_TOKEN_RATE = @as(u32, 7503);
pub const ERROR_INVALID_PEAK_RATE = @as(u32, 7504);
pub const ERROR_INVALID_SD_MODE = @as(u32, 7505);
pub const ERROR_INVALID_QOS_PRIORITY = @as(u32, 7506);
pub const ERROR_INVALID_TRAFFIC_CLASS = @as(u32, 7507);
pub const ERROR_INVALID_ADDRESS_TYPE = @as(u32, 7508);
pub const ERROR_DUPLICATE_FILTER = @as(u32, 7509);
pub const ERROR_FILTER_CONFLICT = @as(u32, 7510);
pub const ERROR_ADDRESS_TYPE_NOT_SUPPORTED = @as(u32, 7511);
pub const ERROR_TC_SUPPORTED_OBJECTS_EXIST = @as(u32, 7512);
pub const ERROR_INCOMPATABLE_QOS = @as(u32, 7513);
pub const ERROR_TC_NOT_SUPPORTED = @as(u32, 7514);
pub const ERROR_TC_OBJECT_LENGTH_INVALID = @as(u32, 7515);
pub const ERROR_INVALID_FLOW_MODE = @as(u32, 7516);
pub const ERROR_INVALID_DIFFSERV_FLOW = @as(u32, 7517);
pub const ERROR_DS_MAPPING_EXISTS = @as(u32, 7518);
pub const ERROR_INVALID_SHAPE_RATE = @as(u32, 7519);
pub const ERROR_INVALID_DS_CLASS = @as(u32, 7520);
pub const ERROR_TOO_MANY_CLIENTS = @as(u32, 7521);
pub const GUID_QOS_REMAINING_BANDWIDTH = Guid.initString("c4c51720-40ec-11d1-2c91-00aa00574915");
pub const GUID_QOS_BESTEFFORT_BANDWIDTH = Guid.initString("ed885290-40ec-11d1-2c91-00aa00574915");
pub const GUID_QOS_LATENCY = Guid.initString("fc408ef0-40ec-11d1-2c91-00aa00574915");
pub const GUID_QOS_FLOW_COUNT = Guid.initString("1147f880-40ed-11d1-2c91-00aa00574915");
pub const GUID_QOS_NON_BESTEFFORT_LIMIT = Guid.initString("185c44e0-40ed-11d1-2c91-00aa00574915");
pub const GUID_QOS_MAX_OUTSTANDING_SENDS = Guid.initString("161ffa86-6120-11d1-2c91-00aa00574915");
pub const GUID_QOS_STATISTICS_BUFFER = Guid.initString("bb2c0980-e900-11d1-b07e-0080c71382bf");
pub const GUID_QOS_FLOW_MODE = Guid.initString("5c82290a-515a-11d2-8e58-00c04fc9bfcb");
pub const GUID_QOS_ISSLOW_FLOW = Guid.initString("abf273a4-ee07-11d2-be1b-00a0c99ee63b");
pub const GUID_QOS_TIMER_RESOLUTION = Guid.initString("ba10cc88-f13e-11d2-be1b-00a0c99ee63b");
pub const GUID_QOS_FLOW_IP_CONFORMING = Guid.initString("07f99a8b-fcd2-11d2-be1e-00a0c99ee63b");
pub const GUID_QOS_FLOW_IP_NONCONFORMING = Guid.initString("087a5987-fcd2-11d2-be1e-00a0c99ee63b");
pub const GUID_QOS_FLOW_8021P_CONFORMING = Guid.initString("08c1e013-fcd2-11d2-be1e-00a0c99ee63b");
pub const GUID_QOS_FLOW_8021P_NONCONFORMING = Guid.initString("09023f91-fcd2-11d2-be1e-00a0c99ee63b");
pub const GUID_QOS_ENABLE_AVG_STATS = Guid.initString("bafb6d11-27c4-4801-a46f-ef8080c188c8");
pub const GUID_QOS_ENABLE_WINDOW_ADJUSTMENT = Guid.initString("aa966725-d3e9-4c55-b335-2a00279a1e64");
pub const FSCTL_TCP_BASE = @as(u32, 18);
pub const IF_MIB_STATS_ID = @as(u32, 1);
pub const IP_MIB_STATS_ID = @as(u32, 1);
pub const IP_MIB_ADDRTABLE_ENTRY_ID = @as(u32, 258);
pub const IP_INTFC_INFO_ID = @as(u32, 259);
pub const MAX_PHYSADDR_SIZE = @as(u32, 8);
pub const SIPAEV_PREBOOT_CERT = @as(u32, 0);
pub const SIPAEV_POST_CODE = @as(u32, 1);
pub const SIPAEV_UNUSED = @as(u32, 2);
pub const SIPAEV_NO_ACTION = @as(u32, 3);
pub const SIPAEV_SEPARATOR = @as(u32, 4);
pub const SIPAEV_ACTION = @as(u32, 5);
pub const SIPAEV_EVENT_TAG = @as(u32, 6);
pub const SIPAEV_S_CRTM_CONTENTS = @as(u32, 7);
pub const SIPAEV_S_CRTM_VERSION = @as(u32, 8);
pub const SIPAEV_CPU_MICROCODE = @as(u32, 9);
pub const SIPAEV_PLATFORM_CONFIG_FLAGS = @as(u32, 10);
pub const SIPAEV_TABLE_OF_DEVICES = @as(u32, 11);
pub const SIPAEV_COMPACT_HASH = @as(u32, 12);
pub const SIPAEV_IPL = @as(u32, 13);
pub const SIPAEV_IPL_PARTITION_DATA = @as(u32, 14);
pub const SIPAEV_NONHOST_CODE = @as(u32, 15);
pub const SIPAEV_NONHOST_CONFIG = @as(u32, 16);
pub const SIPAEV_NONHOST_INFO = @as(u32, 17);
pub const SIPAEV_OMIT_BOOT_DEVICE_EVENTS = @as(u32, 18);
pub const SIPAEV_EFI_EVENT_BASE = @as(u32, 2147483648);
pub const SIPAEV_EFI_VARIABLE_DRIVER_CONFIG = @as(u32, 2147483649);
pub const SIPAEV_EFI_VARIABLE_BOOT = @as(u32, 2147483650);
pub const SIPAEV_EFI_BOOT_SERVICES_APPLICATION = @as(u32, 2147483651);
pub const SIPAEV_EFI_BOOT_SERVICES_DRIVER = @as(u32, 2147483652);
pub const SIPAEV_EFI_RUNTIME_SERVICES_DRIVER = @as(u32, 2147483653);
pub const SIPAEV_EFI_GPT_EVENT = @as(u32, 2147483654);
pub const SIPAEV_EFI_ACTION = @as(u32, 2147483655);
pub const SIPAEV_EFI_PLATFORM_FIRMWARE_BLOB = @as(u32, 2147483656);
pub const SIPAEV_EFI_HANDOFF_TABLES = @as(u32, 2147483657);
pub const SIPAEV_EFI_PLATFORM_FIRMWARE_BLOB2 = @as(u32, 2147483658);
pub const SIPAEV_EFI_HANDOFF_TABLES2 = @as(u32, 2147483659);
pub const SIPAEV_EFI_HCRTM_EVENT = @as(u32, 2147483664);
pub const SIPAEV_EFI_VARIABLE_AUTHORITY = @as(u32, 2147483872);
pub const SIPAEV_EFI_SPDM_FIRMWARE_BLOB = @as(u32, 2147483873);
pub const SIPAEV_EFI_SPDM_FIRMWARE_CONFIG = @as(u32, 2147483874);
pub const SIPAEV_TXT_EVENT_BASE = @as(u32, 1024);
pub const SIPAEV_TXT_PCR_MAPPING = @as(u32, 1025);
pub const SIPAEV_TXT_HASH_START = @as(u32, 1026);
pub const SIPAEV_TXT_COMBINED_HASH = @as(u32, 1027);
pub const SIPAEV_TXT_MLE_HASH = @as(u32, 1028);
pub const SIPAEV_TXT_BIOSAC_REG_DATA = @as(u32, 1034);
pub const SIPAEV_TXT_CPU_SCRTM_STAT = @as(u32, 1035);
pub const SIPAEV_TXT_LCP_CONTROL_HASH = @as(u32, 1036);
pub const SIPAEV_TXT_ELEMENTS_HASH = @as(u32, 1037);
pub const SIPAEV_TXT_STM_HASH = @as(u32, 1038);
pub const SIPAEV_TXT_OSSINITDATA_CAP_HASH = @as(u32, 1039);
pub const SIPAEV_TXT_SINIT_PUBKEY_HASH = @as(u32, 1040);
pub const SIPAEV_TXT_LCP_HASH = @as(u32, 1041);
pub const SIPAEV_TXT_LCP_DETAILS_HASH = @as(u32, 1042);
pub const SIPAEV_TXT_LCP_AUTHORITIES_HASH = @as(u32, 1043);
pub const SIPAEV_TXT_NV_INFO_HASH = @as(u32, 1044);
pub const SIPAEV_TXT_COLD_BOOT_BIOS_HASH = @as(u32, 1045);
pub const SIPAEV_TXT_KM_HASH = @as(u32, 1046);
pub const SIPAEV_TXT_BPM_HASH = @as(u32, 1047);
pub const SIPAEV_TXT_KM_INFO_HASH = @as(u32, 1048);
pub const SIPAEV_TXT_BPM_INFO_HASH = @as(u32, 1049);
pub const SIPAEV_TXT_BOOT_POL_HASH = @as(u32, 1050);
pub const SIPAEV_TXT_RANDOM_VALUE = @as(u32, 1278);
pub const SIPAEV_TXT_CAP_VALUE = @as(u32, 1279);
pub const SIPAEV_AMD_SL_EVENT_BASE = @as(u32, 32768);
pub const SIPAEV_AMD_SL_LOAD = @as(u32, 32769);
pub const SIPAEV_AMD_SL_PSP_FW_SPLT = @as(u32, 32770);
pub const SIPAEV_AMD_SL_TSME_RB_FUSE = @as(u32, 32771);
pub const SIPAEV_AMD_SL_PUB_KEY = @as(u32, 32772);
pub const SIPAEV_AMD_SL_SVN = @as(u32, 32773);
pub const SIPAEV_AMD_SL_LOAD_1 = @as(u32, 32774);
pub const SIPAEV_AMD_SL_SEPARATOR = @as(u32, 32775);
pub const SIPAEVENTTYPE_NONMEASURED = @as(u32, 2147483648);
pub const SIPAEVENTTYPE_AGGREGATION = @as(u32, 1073741824);
pub const SIPAEVENTTYPE_CONTAINER = @as(u32, 65536);
pub const SIPAEVENTTYPE_INFORMATION = @as(u32, 131072);
pub const SIPAEVENTTYPE_ERROR = @as(u32, 196608);
pub const SIPAEVENTTYPE_PREOSPARAMETER = @as(u32, 262144);
pub const SIPAEVENTTYPE_OSPARAMETER = @as(u32, 327680);
pub const SIPAEVENTTYPE_AUTHORITY = @as(u32, 393216);
pub const SIPAEVENTTYPE_LOADEDMODULE = @as(u32, 458752);
pub const SIPAEVENTTYPE_TRUSTPOINT = @as(u32, 524288);
pub const SIPAEVENTTYPE_ELAM = @as(u32, 589824);
pub const SIPAEVENTTYPE_VBS = @as(u32, 655360);
pub const SIPAEVENTTYPE_KSR = @as(u32, 720896);
pub const SIPAEVENTTYPE_DRTM = @as(u32, 786432);
pub const SIPAERROR_FIRMWAREFAILURE = @as(u32, 196609);
pub const SIPAERROR_INTERNALFAILURE = @as(u32, 196611);
pub const SIPAEVENT_INFORMATION = @as(u32, 131073);
pub const SIPAEVENT_BOOTCOUNTER = @as(u32, 131074);
pub const SIPAEVENT_TRANSFER_CONTROL = @as(u32, 131075);
pub const SIPAEVENT_APPLICATION_RETURN = @as(u32, 131076);
pub const SIPAEVENT_BITLOCKER_UNLOCK = @as(u32, 131077);
pub const SIPAEVENT_EVENTCOUNTER = @as(u32, 131078);
pub const SIPAEVENT_COUNTERID = @as(u32, 131079);
pub const SIPAEVENT_MORBIT_NOT_CANCELABLE = @as(u32, 131080);
pub const SIPAEVENT_APPLICATION_SVN = @as(u32, 131081);
pub const SIPAEVENT_SVN_CHAIN_STATUS = @as(u32, 131082);
pub const SIPAEVENT_MORBIT_API_STATUS = @as(u32, 131083);
pub const SIPAEVENT_BOOTDEBUGGING = @as(u32, 262145);
pub const SIPAEVENT_BOOT_REVOCATION_LIST = @as(u32, 262146);
pub const SIPAEVENT_OSKERNELDEBUG = @as(u32, 327681);
pub const SIPAEVENT_CODEINTEGRITY = @as(u32, 327682);
pub const SIPAEVENT_TESTSIGNING = @as(u32, 327683);
pub const SIPAEVENT_DATAEXECUTIONPREVENTION = @as(u32, 327684);
pub const SIPAEVENT_SAFEMODE = @as(u32, 327685);
pub const SIPAEVENT_WINPE = @as(u32, 327686);
pub const SIPAEVENT_PHYSICALADDRESSEXTENSION = @as(u32, 327687);
pub const SIPAEVENT_OSDEVICE = @as(u32, 327688);
pub const SIPAEVENT_SYSTEMROOT = @as(u32, 327689);
pub const SIPAEVENT_HYPERVISOR_LAUNCH_TYPE = @as(u32, 327690);
pub const SIPAEVENT_HYPERVISOR_PATH = @as(u32, 327691);
pub const SIPAEVENT_HYPERVISOR_IOMMU_POLICY = @as(u32, 327692);
pub const SIPAEVENT_HYPERVISOR_DEBUG = @as(u32, 327693);
pub const SIPAEVENT_DRIVER_LOAD_POLICY = @as(u32, 327694);
pub const SIPAEVENT_SI_POLICY = @as(u32, 327695);
pub const SIPAEVENT_HYPERVISOR_MMIO_NX_POLICY = @as(u32, 327696);
pub const SIPAEVENT_HYPERVISOR_MSR_FILTER_POLICY = @as(u32, 327697);
pub const SIPAEVENT_VSM_LAUNCH_TYPE = @as(u32, 327698);
pub const SIPAEVENT_OS_REVOCATION_LIST = @as(u32, 327699);
pub const SIPAEVENT_SMT_STATUS = @as(u32, 327700);
pub const SIPAEVENT_VSM_IDK_INFO = @as(u32, 327712);
pub const SIPAEVENT_FLIGHTSIGNING = @as(u32, 327713);
pub const SIPAEVENT_PAGEFILE_ENCRYPTION_ENABLED = @as(u32, 327714);
pub const SIPAEVENT_VSM_IDKS_INFO = @as(u32, 327715);
pub const SIPAEVENT_HIBERNATION_DISABLED = @as(u32, 327716);
pub const SIPAEVENT_DUMPS_DISABLED = @as(u32, 327717);
pub const SIPAEVENT_DUMP_ENCRYPTION_ENABLED = @as(u32, 327718);
pub const SIPAEVENT_DUMP_ENCRYPTION_KEY_DIGEST = @as(u32, 327719);
pub const SIPAEVENT_LSAISO_CONFIG = @as(u32, 327720);
pub const SIPAEVENT_SBCP_INFO = @as(u32, 327721);
pub const SIPAEVENT_HYPERVISOR_BOOT_DMA_PROTECTION = @as(u32, 327728);
pub const SIPAEVENT_NOAUTHORITY = @as(u32, 393217);
pub const SIPAEVENT_AUTHORITYPUBKEY = @as(u32, 393218);
pub const SIPAEVENT_FILEPATH = @as(u32, 458753);
pub const SIPAEVENT_IMAGESIZE = @as(u32, 458754);
pub const SIPAEVENT_HASHALGORITHMID = @as(u32, 458755);
pub const SIPAEVENT_AUTHENTICODEHASH = @as(u32, 458756);
pub const SIPAEVENT_AUTHORITYISSUER = @as(u32, 458757);
pub const SIPAEVENT_AUTHORITYSERIAL = @as(u32, 458758);
pub const SIPAEVENT_IMAGEBASE = @as(u32, 458759);
pub const SIPAEVENT_AUTHORITYPUBLISHER = @as(u32, 458760);
pub const SIPAEVENT_AUTHORITYSHA1THUMBPRINT = @as(u32, 458761);
pub const SIPAEVENT_IMAGEVALIDATED = @as(u32, 458762);
pub const SIPAEVENT_MODULE_SVN = @as(u32, 458763);
pub const SIPAEVENT_ELAM_KEYNAME = @as(u32, 589825);
pub const SIPAEVENT_ELAM_CONFIGURATION = @as(u32, 589826);
pub const SIPAEVENT_ELAM_POLICY = @as(u32, 589827);
pub const SIPAEVENT_ELAM_MEASURED = @as(u32, 589828);
pub const SIPAEVENT_VBS_VSM_REQUIRED = @as(u32, 655361);
pub const SIPAEVENT_VBS_SECUREBOOT_REQUIRED = @as(u32, 655362);
pub const SIPAEVENT_VBS_IOMMU_REQUIRED = @as(u32, 655363);
pub const SIPAEVENT_VBS_MMIO_NX_REQUIRED = @as(u32, 655364);
pub const SIPAEVENT_VBS_MSR_FILTERING_REQUIRED = @as(u32, 655365);
pub const SIPAEVENT_VBS_MANDATORY_ENFORCEMENT = @as(u32, 655366);
pub const SIPAEVENT_VBS_HVCI_POLICY = @as(u32, 655367);
pub const SIPAEVENT_VBS_MICROSOFT_BOOT_CHAIN_REQUIRED = @as(u32, 655368);
pub const SIPAEVENT_VBS_DUMP_USES_AMEROOT = @as(u32, 655369);
pub const SIPAEVENT_VBS_VSM_NOSECRETS_ENFORCED = @as(u32, 655370);
pub const SIPAEVENT_KSR_SIGNATURE = @as(u32, 720897);
pub const SIPAEVENT_DRTM_STATE_AUTH = @as(u32, 786433);
pub const SIPAEVENT_DRTM_SMM_LEVEL = @as(u32, 786434);
pub const SIPAEVENT_DRTM_AMD_SMM_HASH = @as(u32, 786435);
pub const SIPAEVENT_DRTM_AMD_SMM_SIGNER_KEY = @as(u32, 786436);
pub const FVEB_UNLOCK_FLAG_NONE = @as(u32, 0);
pub const FVEB_UNLOCK_FLAG_CACHED = @as(u32, 1);
pub const FVEB_UNLOCK_FLAG_MEDIA = @as(u32, 2);
pub const FVEB_UNLOCK_FLAG_TPM = @as(u32, 4);
pub const FVEB_UNLOCK_FLAG_PIN = @as(u32, 16);
pub const FVEB_UNLOCK_FLAG_EXTERNAL = @as(u32, 32);
pub const FVEB_UNLOCK_FLAG_RECOVERY = @as(u32, 64);
pub const FVEB_UNLOCK_FLAG_PASSPHRASE = @as(u32, 128);
pub const FVEB_UNLOCK_FLAG_NBP = @as(u32, 256);
pub const FVEB_UNLOCK_FLAG_AUK_OSFVEINFO = @as(u32, 512);
pub const OSDEVICE_TYPE_UNKNOWN = @as(u32, 0);
pub const OSDEVICE_TYPE_BLOCKIO_HARDDISK = @as(u32, 65537);
pub const OSDEVICE_TYPE_BLOCKIO_REMOVABLEDISK = @as(u32, 65538);
pub const OSDEVICE_TYPE_BLOCKIO_CDROM = @as(u32, 65539);
pub const OSDEVICE_TYPE_BLOCKIO_PARTITION = @as(u32, 65540);
pub const OSDEVICE_TYPE_BLOCKIO_FILE = @as(u32, 65541);
pub const OSDEVICE_TYPE_BLOCKIO_RAMDISK = @as(u32, 65542);
pub const OSDEVICE_TYPE_BLOCKIO_VIRTUALHARDDISK = @as(u32, 65543);
pub const OSDEVICE_TYPE_SERIAL = @as(u32, 131072);
pub const OSDEVICE_TYPE_UDP = @as(u32, 196608);
pub const OSDEVICE_TYPE_VMBUS = @as(u32, 262144);
pub const OSDEVICE_TYPE_COMPOSITE = @as(u32, 327680);
pub const SIPAHDRSIGNATURE = @as(u32, 1279476311);
pub const SIPALOGVERSION = @as(u32, 1);
pub const SIPAKSRHDRSIGNATURE = @as(u32, 1297240907);
pub const WBCL_DIGEST_ALG_ID_SHA_1 = @as(u32, 4);
pub const WBCL_DIGEST_ALG_ID_SHA_2_256 = @as(u32, 11);
pub const WBCL_DIGEST_ALG_ID_SHA_2_384 = @as(u32, 12);
pub const WBCL_DIGEST_ALG_ID_SHA_2_512 = @as(u32, 13);
pub const WBCL_DIGEST_ALG_ID_SM3_256 = @as(u32, 18);
pub const WBCL_DIGEST_ALG_ID_SHA3_256 = @as(u32, 39);
pub const WBCL_DIGEST_ALG_ID_SHA3_384 = @as(u32, 40);
pub const WBCL_DIGEST_ALG_ID_SHA3_512 = @as(u32, 41);
pub const WBCL_DIGEST_ALG_BITMAP_SHA_1 = @as(u32, 1);
pub const WBCL_DIGEST_ALG_BITMAP_SHA_2_256 = @as(u32, 2);
pub const WBCL_DIGEST_ALG_BITMAP_SHA_2_384 = @as(u32, 4);
pub const WBCL_DIGEST_ALG_BITMAP_SHA_2_512 = @as(u32, 8);
pub const WBCL_DIGEST_ALG_BITMAP_SM3_256 = @as(u32, 16);
pub const WBCL_DIGEST_ALG_BITMAP_SHA3_256 = @as(u32, 32);
pub const WBCL_DIGEST_ALG_BITMAP_SHA3_384 = @as(u32, 64);
pub const WBCL_DIGEST_ALG_BITMAP_SHA3_512 = @as(u32, 128);
pub const WBCL_HASH_LEN_SHA1 = @as(u32, 20);
pub const IS_GUAR_RSPEC = @as(i32, 130);
pub const GUAR_ADSPARM_C = @as(i32, 131);
pub const GUAR_ADSPARM_D = @as(i32, 132);
pub const GUAR_ADSPARM_Ctot = @as(i32, 133);
pub const GUAR_ADSPARM_Dtot = @as(i32, 134);
pub const GUAR_ADSPARM_Csum = @as(i32, 135);
pub const GUAR_ADSPARM_Dsum = @as(i32, 136);

//--------------------------------------------------------------------------------
// Section: Types (112)
//--------------------------------------------------------------------------------
pub const LPM_HANDLE = isize;

pub const RHANDLE = isize;

pub const FLOWSPEC = extern struct {
    TokenRate: u32,
    TokenBucketSize: u32,
    PeakBandwidth: u32,
    Latency: u32,
    DelayVariation: u32,
    ServiceType: u32,
    MaxSduSize: u32,
    MinimumPolicedSize: u32,
};

pub const QOS_OBJECT_HDR = extern struct {
    ObjectType: u32,
    ObjectLength: u32,
};

pub const QOS_SD_MODE = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    ShapeDiscardMode: u32,
};

pub const QOS_SHAPING_RATE = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    ShapingRate: u32,
};

pub const RsvpObjHdr = extern struct {
    obj_length: u16,
    obj_class: u8,
    obj_ctype: u8,
};

pub const Session_IPv4 = extern struct {
    sess_destaddr: IN_ADDR,
    sess_protid: u8,
    sess_flags: u8,
    sess_destport: u16,
};

pub const RSVP_SESSION = extern struct {
    sess_header: RsvpObjHdr,
    sess_u: extern union {
        sess_ipv4: Session_IPv4,
    },
};

pub const Rsvp_Hop_IPv4 = extern struct {
    hop_ipaddr: IN_ADDR,
    hop_LIH: u32,
};

pub const RSVP_HOP = extern struct {
    hop_header: RsvpObjHdr,
    hop_u: extern union {
        hop_ipv4: Rsvp_Hop_IPv4,
    },
};

pub const RESV_STYLE = extern struct {
    style_header: RsvpObjHdr,
    style_word: u32,
};

pub const Filter_Spec_IPv4 = extern struct {
    filt_ipaddr: IN_ADDR,
    filt_unused: u16,
    filt_port: u16,
};

pub const Filter_Spec_IPv4GPI = extern struct {
    filt_ipaddr: IN_ADDR,
    filt_gpi: u32,
};

pub const FILTER_SPEC = extern struct {
    filt_header: RsvpObjHdr,
    filt_u: extern union {
        filt_ipv4: Filter_Spec_IPv4,
        filt_ipv4gpi: Filter_Spec_IPv4GPI,
    },
};

pub const Scope_list_ipv4 = extern struct {
    scopl_ipaddr: [1]IN_ADDR,
};

pub const RSVP_SCOPE = extern struct {
    scopl_header: RsvpObjHdr,
    scope_u: extern union {
        scopl_ipv4: Scope_list_ipv4,
    },
};

pub const Error_Spec_IPv4 = extern struct {
    errs_errnode: IN_ADDR,
    errs_flags: u8,
    errs_code: u8,
    errs_value: u16,
};

pub const ERROR_SPEC = extern struct {
    errs_header: RsvpObjHdr,
    errs_u: extern union {
        errs_ipv4: Error_Spec_IPv4,
    },
};

pub const POLICY_DATA = extern struct {
    PolicyObjHdr: RsvpObjHdr,
    usPeOffset: u16,
    usReserved: u16,
};

pub const POLICY_ELEMENT = extern struct {
    usPeLength: u16,
    usPeType: u16,
    ucPeData: [4]u8,
};

pub const int_serv_wkp = enum(i32) {
    HOP_CNT = 4,
    PATH_BW = 6,
    MIN_LATENCY = 8,
    COMPOSED_MTU = 10,
    TB_TSPEC = 127,
    Q_TSPEC = 128,
};
pub const IS_WKP_HOP_CNT = int_serv_wkp.HOP_CNT;
pub const IS_WKP_PATH_BW = int_serv_wkp.PATH_BW;
pub const IS_WKP_MIN_LATENCY = int_serv_wkp.MIN_LATENCY;
pub const IS_WKP_COMPOSED_MTU = int_serv_wkp.COMPOSED_MTU;
pub const IS_WKP_TB_TSPEC = int_serv_wkp.TB_TSPEC;
pub const IS_WKP_Q_TSPEC = int_serv_wkp.Q_TSPEC;

pub const IntServMainHdr = extern struct {
    ismh_version: u8,
    ismh_unused: u8,
    ismh_len32b: u16,
};

pub const IntServServiceHdr = extern struct {
    issh_service: u8,
    issh_flags: u8,
    issh_len32b: u16,
};

pub const IntServParmHdr = extern struct {
    isph_parm_num: u8,
    isph_flags: u8,
    isph_len32b: u16,
};

pub const GenTspecParms = extern struct {
    TB_Tspec_r: f32,
    TB_Tspec_b: f32,
    TB_Tspec_p: f32,
    TB_Tspec_m: u32,
    TB_Tspec_M: u32,
};

pub const GenTspec = extern struct {
    gen_Tspec_serv_hdr: IntServServiceHdr,
    gen_Tspec_parm_hdr: IntServParmHdr,
    gen_Tspec_parms: GenTspecParms,
};

pub const QualTspecParms = extern struct {
    TB_Tspec_M: u32,
};

pub const QualTspec = extern struct {
    qual_Tspec_serv_hdr: IntServServiceHdr,
    qual_Tspec_parm_hdr: IntServParmHdr,
    qual_Tspec_parms: QualTspecParms,
};

pub const QualAppFlowSpec = extern struct {
    Q_spec_serv_hdr: IntServServiceHdr,
    Q_spec_parm_hdr: IntServParmHdr,
    Q_spec_parms: QualTspecParms,
};

pub const IntServTspecBody = extern struct {
    st_mh: IntServMainHdr,
    tspec_u: extern union {
        gen_stspec: GenTspec,
        qual_stspec: QualTspec,
    },
};

pub const SENDER_TSPEC = extern struct {
    stspec_header: RsvpObjHdr,
    stspec_body: IntServTspecBody,
};

pub const CtrlLoadFlowspec = extern struct {
    CL_spec_serv_hdr: IntServServiceHdr,
    CL_spec_parm_hdr: IntServParmHdr,
    CL_spec_parms: GenTspecParms,
};

pub const GuarRspec = extern struct {
    Guar_R: f32,
    Guar_S: u32,
};

pub const GuarFlowSpec = extern struct {
    Guar_serv_hdr: IntServServiceHdr,
    Guar_Tspec_hdr: IntServParmHdr,
    Guar_Tspec_parms: GenTspecParms,
    Guar_Rspec_hdr: IntServParmHdr,
    Guar_Rspec: GuarRspec,
};

pub const IntServFlowSpec = extern struct {
    spec_mh: IntServMainHdr,
    spec_u: extern union {
        CL_spec: CtrlLoadFlowspec,
        G_spec: GuarFlowSpec,
        Q_spec: QualAppFlowSpec,
    },
};

pub const IS_FLOWSPEC = extern struct {
    flow_header: RsvpObjHdr,
    flow_body: IntServFlowSpec,
};

pub const flow_desc = extern struct {
    u1: extern union {
        stspec: ?*SENDER_TSPEC,
        isflow: ?*IS_FLOWSPEC,
    },
    u2: extern union {
        stemp: ?*FILTER_SPEC,
        fspec: ?*FILTER_SPEC,
    },
};

pub const Gads_parms_t = extern struct {
    Gads_serv_hdr: IntServServiceHdr,
    Gads_Ctot_hdr: IntServParmHdr,
    Gads_Ctot: u32,
    Gads_Dtot_hdr: IntServParmHdr,
    Gads_Dtot: u32,
    Gads_Csum_hdr: IntServParmHdr,
    Gads_Csum: u32,
    Gads_Dsum_hdr: IntServParmHdr,
    Gads_Dsum: u32,
};

pub const GenAdspecParams = extern struct {
    gen_parm_hdr: IntServServiceHdr,
    gen_parm_hopcnt_hdr: IntServParmHdr,
    gen_parm_hopcnt: u32,
    gen_parm_pathbw_hdr: IntServParmHdr,
    gen_parm_path_bw: f32,
    gen_parm_minlat_hdr: IntServParmHdr,
    gen_parm_min_latency: u32,
    gen_parm_compmtu_hdr: IntServParmHdr,
    gen_parm_composed_MTU: u32,
};

pub const IS_ADSPEC_BODY = extern struct {
    adspec_mh: IntServMainHdr,
    adspec_genparms: GenAdspecParams,
};

pub const ADSPEC = extern struct {
    adspec_header: RsvpObjHdr,
    adspec_body: IS_ADSPEC_BODY,
};

pub const ID_ERROR_OBJECT = extern struct {
    usIdErrLength: u16,
    ucAType: u8,
    ucSubType: u8,
    usReserved: u16,
    usIdErrorValue: u16,
    ucIdErrData: [4]u8,
};

pub const RSVP_MSG_OBJS = extern struct {
    RsvpMsgType: i32,
    pRsvpSession: ?*RSVP_SESSION,
    pRsvpFromHop: ?*RSVP_HOP,
    pRsvpToHop: ?*RSVP_HOP,
    pResvStyle: ?*RESV_STYLE,
    pRsvpScope: ?*RSVP_SCOPE,
    FlowDescCount: i32,
    pFlowDescs: ?*flow_desc,
    PdObjectCount: i32,
    ppPdObjects: ?*?*POLICY_DATA,
    pErrorSpec: ?*ERROR_SPEC,
    pAdspec: ?*ADSPEC,
};

pub const PALLOCMEM = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        Size: u32,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
    else => *const fn (
        Size: u32,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
};

pub const PFREEMEM = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pv: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        pv: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const policy_decision = extern struct {
    lpvResult: u32,
    wPolicyErrCode: u16,
    wPolicyErrValue: u16,
};

pub const CBADMITRESULT = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        LpmHandle: LPM_HANDLE,
        RequestHandle: RHANDLE,
        ulPcmActionFlags: u32,
        LpmError: i32,
        PolicyDecisionsCount: i32,
        pPolicyDecisions: ?*policy_decision,
    ) callconv(@import("std").os.windows.WINAPI) ?*u32,
    else => *const fn (
        LpmHandle: LPM_HANDLE,
        RequestHandle: RHANDLE,
        ulPcmActionFlags: u32,
        LpmError: i32,
        PolicyDecisionsCount: i32,
        pPolicyDecisions: ?*policy_decision,
    ) callconv(@import("std").os.windows.WINAPI) ?*u32,
};

pub const CBGETRSVPOBJECTS = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        LpmHandle: LPM_HANDLE,
        RequestHandle: RHANDLE,
        LpmError: i32,
        RsvpObjectsCount: i32,
        ppRsvpObjects: ?*?*RsvpObjHdr,
    ) callconv(@import("std").os.windows.WINAPI) ?*u32,
    else => *const fn (
        LpmHandle: LPM_HANDLE,
        RequestHandle: RHANDLE,
        LpmError: i32,
        RsvpObjectsCount: i32,
        ppRsvpObjects: ?*?*RsvpObjHdr,
    ) callconv(@import("std").os.windows.WINAPI) ?*u32,
};

pub const LPM_INIT_INFO = extern struct {
    PcmVersionNumber: u32,
    ResultTimeLimit: u32,
    ConfiguredLpmCount: i32,
    AllocMemory: ?PALLOCMEM,
    FreeMemory: ?PFREEMEM,
    PcmAdmitResultCallback: ?CBADMITRESULT,
    GetRsvpObjectsCallback: ?CBGETRSVPOBJECTS,
};

pub const lpmiptable = extern struct {
    ulIfIndex: u32,
    MediaType: u32,
    IfIpAddr: IN_ADDR,
    IfNetMask: IN_ADDR,
};

pub const QOS_TRAFFIC_TYPE = enum(i32) {
    BestEffort = 0,
    Background = 1,
    ExcellentEffort = 2,
    AudioVideo = 3,
    Voice = 4,
    Control = 5,
};
pub const QOSTrafficTypeBestEffort = QOS_TRAFFIC_TYPE.BestEffort;
pub const QOSTrafficTypeBackground = QOS_TRAFFIC_TYPE.Background;
pub const QOSTrafficTypeExcellentEffort = QOS_TRAFFIC_TYPE.ExcellentEffort;
pub const QOSTrafficTypeAudioVideo = QOS_TRAFFIC_TYPE.AudioVideo;
pub const QOSTrafficTypeVoice = QOS_TRAFFIC_TYPE.Voice;
pub const QOSTrafficTypeControl = QOS_TRAFFIC_TYPE.Control;

pub const QOS_SET_FLOW = enum(i32) {
    TrafficType = 0,
    OutgoingRate = 1,
    OutgoingDSCPValue = 2,
};
pub const QOSSetTrafficType = QOS_SET_FLOW.TrafficType;
pub const QOSSetOutgoingRate = QOS_SET_FLOW.OutgoingRate;
pub const QOSSetOutgoingDSCPValue = QOS_SET_FLOW.OutgoingDSCPValue;

pub const QOS_PACKET_PRIORITY = extern struct {
    ConformantDSCPValue: u32,
    NonConformantDSCPValue: u32,
    ConformantL2Value: u32,
    NonConformantL2Value: u32,
};

pub const QOS_FLOW_FUNDAMENTALS = extern struct {
    BottleneckBandwidthSet: BOOL,
    BottleneckBandwidth: u64,
    AvailableBandwidthSet: BOOL,
    AvailableBandwidth: u64,
    RTTSet: BOOL,
    RTT: u32,
};

pub const QOS_FLOWRATE_REASON = enum(i32) {
    NotApplicable = 0,
    ContentChange = 1,
    Congestion = 2,
    HigherContentEncoding = 3,
    UserCaused = 4,
};
pub const QOSFlowRateNotApplicable = QOS_FLOWRATE_REASON.NotApplicable;
pub const QOSFlowRateContentChange = QOS_FLOWRATE_REASON.ContentChange;
pub const QOSFlowRateCongestion = QOS_FLOWRATE_REASON.Congestion;
pub const QOSFlowRateHigherContentEncoding = QOS_FLOWRATE_REASON.HigherContentEncoding;
pub const QOSFlowRateUserCaused = QOS_FLOWRATE_REASON.UserCaused;

pub const QOS_SHAPING = enum(i32) {
    ShapeOnly = 0,
    ShapeAndMark = 1,
    UseNonConformantMarkings = 2,
};
pub const QOSShapeOnly = QOS_SHAPING.ShapeOnly;
pub const QOSShapeAndMark = QOS_SHAPING.ShapeAndMark;
pub const QOSUseNonConformantMarkings = QOS_SHAPING.UseNonConformantMarkings;

pub const QOS_FLOWRATE_OUTGOING = extern struct {
    Bandwidth: u64,
    ShapingBehavior: QOS_SHAPING,
    Reason: QOS_FLOWRATE_REASON,
};

pub const QOS_QUERY_FLOW = enum(i32) {
    FlowFundamentals = 0,
    PacketPriority = 1,
    OutgoingRate = 2,
};
pub const QOSQueryFlowFundamentals = QOS_QUERY_FLOW.FlowFundamentals;
pub const QOSQueryPacketPriority = QOS_QUERY_FLOW.PacketPriority;
pub const QOSQueryOutgoingRate = QOS_QUERY_FLOW.OutgoingRate;

pub const QOS_NOTIFY_FLOW = enum(i32) {
    Congested = 0,
    Uncongested = 1,
    Available = 2,
};
pub const QOSNotifyCongested = QOS_NOTIFY_FLOW.Congested;
pub const QOSNotifyUncongested = QOS_NOTIFY_FLOW.Uncongested;
pub const QOSNotifyAvailable = QOS_NOTIFY_FLOW.Available;

pub const QOS_VERSION = extern struct {
    MajorVersion: u16,
    MinorVersion: u16,
};

pub const QOS_FRIENDLY_NAME = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    FriendlyName: [256]u16,
};

pub const QOS_TRAFFIC_CLASS = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    TrafficClass: u32,
};

pub const QOS_DS_CLASS = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    DSField: u32,
};

pub const QOS_DIFFSERV = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    DSFieldCount: u32,
    DiffservRule: [1]u8,
};

pub const QOS_DIFFSERV_RULE = extern struct {
    InboundDSField: u8,
    ConformingOutboundDSField: u8,
    NonConformingOutboundDSField: u8,
    ConformingUserPriority: u8,
    NonConformingUserPriority: u8,
};

pub const QOS_TCP_TRAFFIC = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
};

pub const TCI_NOTIFY_HANDLER = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        ClRegCtx: ?HANDLE,
        ClIfcCtx: ?HANDLE,
        Event: u32,
        SubCode: ?HANDLE,
        BufSize: u32,
        // TODO: what to do with BytesParamIndex 4?
        Buffer: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        ClRegCtx: ?HANDLE,
        ClIfcCtx: ?HANDLE,
        Event: u32,
        SubCode: ?HANDLE,
        BufSize: u32,
        // TODO: what to do with BytesParamIndex 4?
        Buffer: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const TCI_ADD_FLOW_COMPLETE_HANDLER = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        ClFlowCtx: ?HANDLE,
        Status: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        ClFlowCtx: ?HANDLE,
        Status: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const TCI_MOD_FLOW_COMPLETE_HANDLER = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        ClFlowCtx: ?HANDLE,
        Status: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        ClFlowCtx: ?HANDLE,
        Status: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const TCI_DEL_FLOW_COMPLETE_HANDLER = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        ClFlowCtx: ?HANDLE,
        Status: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        ClFlowCtx: ?HANDLE,
        Status: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const TCI_CLIENT_FUNC_LIST = extern struct {
    ClNotifyHandler: ?TCI_NOTIFY_HANDLER,
    ClAddFlowCompleteHandler: ?TCI_ADD_FLOW_COMPLETE_HANDLER,
    ClModifyFlowCompleteHandler: ?TCI_MOD_FLOW_COMPLETE_HANDLER,
    ClDeleteFlowCompleteHandler: ?TCI_DEL_FLOW_COMPLETE_HANDLER,
};

pub const ADDRESS_LIST_DESCRIPTOR = extern struct {
    MediaType: u32,
    AddressList: NETWORK_ADDRESS_LIST,
};

pub const TC_IFC_DESCRIPTOR = extern struct {
    Length: u32,
    pInterfaceName: ?PWSTR,
    pInterfaceID: ?PWSTR,
    AddressListDesc: ADDRESS_LIST_DESCRIPTOR,
};

pub const TC_SUPPORTED_INFO_BUFFER = extern struct {
    InstanceIDLength: u16,
    InstanceID: [256]u16,
    InterfaceLuid: u64,
    AddrListDesc: ADDRESS_LIST_DESCRIPTOR,
};

pub const TC_GEN_FILTER = extern struct {
    AddressType: u16,
    PatternSize: u32,
    Pattern: ?*anyopaque,
    Mask: ?*anyopaque,
};

pub const TC_GEN_FLOW = extern struct {
    SendingFlowspec: FLOWSPEC,
    ReceivingFlowspec: FLOWSPEC,
    TcObjectsLength: u32,
    TcObjects: [1]QOS_OBJECT_HDR,
};

pub const IP_PATTERN = extern struct {
    Reserved1: u32,
    Reserved2: u32,
    SrcAddr: u32,
    DstAddr: u32,
    S_un: extern union {
        S_un_ports: extern struct {
            s_srcport: u16,
            s_dstport: u16,
        },
        S_un_icmp: extern struct {
            s_type: u8,
            s_code: u8,
            filler: u16,
        },
        S_Spi: u32,
    },
    ProtocolId: u8,
    Reserved3: [3]u8,
};

pub const IPX_PATTERN = extern struct {
    Src: extern struct {
        NetworkAddress: u32,
        NodeAddress: [6]u8,
        Socket: u16,
    },
    Dest: extern struct {
        NetworkAddress: u32,
        NodeAddress: [6]u8,
        Socket: u16,
    },
};

pub const ENUMERATION_BUFFER = extern struct {
    Length: u32,
    OwnerProcessId: u32,
    FlowNameLength: u16,
    FlowName: [256]u16,
    pFlow: ?*TC_GEN_FLOW,
    NumberOfFilters: u32,
    GenericFilter: [1]TC_GEN_FILTER,
};

pub const IN_ADDR_IPV4 = extern union {
    Addr: u32,
    AddrBytes: [4]u8,
};

pub const IN_ADDR_IPV6 = extern struct {
    Addr: [16]u8,
};

pub const RSVP_FILTERSPEC_V4 = extern struct {
    Address: IN_ADDR_IPV4,
    Unused: u16,
    Port: u16,
};

pub const RSVP_FILTERSPEC_V6 = extern struct {
    Address: IN_ADDR_IPV6,
    UnUsed: u16,
    Port: u16,
};

pub const RSVP_FILTERSPEC_V6_FLOW = extern struct {
    Address: IN_ADDR_IPV6,
    UnUsed: u8,
    FlowLabel: [3]u8,
};

pub const RSVP_FILTERSPEC_V4_GPI = extern struct {
    Address: IN_ADDR_IPV4,
    GeneralPortId: u32,
};

pub const RSVP_FILTERSPEC_V6_GPI = extern struct {
    Address: IN_ADDR_IPV6,
    GeneralPortId: u32,
};

pub const FilterType = enum(i32) {
    V4 = 1,
    V6 = 2,
    V6_FLOW = 3,
    V4_GPI = 4,
    V6_GPI = 5,
    _END = 6,
};
pub const FILTERSPECV4 = FilterType.V4;
pub const FILTERSPECV6 = FilterType.V6;
pub const FILTERSPECV6_FLOW = FilterType.V6_FLOW;
pub const FILTERSPECV4_GPI = FilterType.V4_GPI;
pub const FILTERSPECV6_GPI = FilterType.V6_GPI;
pub const FILTERSPEC_END = FilterType._END;

pub const RSVP_FILTERSPEC = extern struct {
    Type: FilterType,
    Anonymous: extern union {
        FilterSpecV4: RSVP_FILTERSPEC_V4,
        FilterSpecV6: RSVP_FILTERSPEC_V6,
        FilterSpecV6Flow: RSVP_FILTERSPEC_V6_FLOW,
        FilterSpecV4Gpi: RSVP_FILTERSPEC_V4_GPI,
        FilterSpecV6Gpi: RSVP_FILTERSPEC_V6_GPI,
    },
};

pub const FLOWDESCRIPTOR = extern struct {
    FlowSpec: FLOWSPEC,
    NumFilters: u32,
    FilterList: ?*RSVP_FILTERSPEC,
};

pub const RSVP_POLICY = extern struct {
    Len: u16,
    Type: u16,
    Info: [4]u8,
};

pub const RSVP_POLICY_INFO = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    NumPolicyElement: u32,
    PolicyElement: [1]RSVP_POLICY,
};

pub const RSVP_RESERVE_INFO = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    Style: u32,
    ConfirmRequest: u32,
    PolicyElementList: ?*RSVP_POLICY_INFO,
    NumFlowDesc: u32,
    FlowDescList: ?*FLOWDESCRIPTOR,
};

pub const RSVP_STATUS_INFO = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    StatusCode: u32,
    ExtendedStatus1: u32,
    ExtendedStatus2: u32,
};

pub const QOS_DESTADDR = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    SocketAddress: ?*const SOCKADDR,
    SocketAddressLength: u32,
};

pub const AD_GENERAL_PARAMS = extern struct {
    IntServAwareHopCount: u32,
    PathBandwidthEstimate: u32,
    MinimumLatency: u32,
    PathMTU: u32,
    Flags: u32,
};

pub const AD_GUARANTEED = extern struct {
    CTotal: u32,
    DTotal: u32,
    CSum: u32,
    DSum: u32,
};

pub const PARAM_BUFFER = extern struct {
    ParameterId: u32,
    Length: u32,
    Buffer: [1]u8,
};

pub const CONTROL_SERVICE = extern struct {
    Length: u32,
    Service: u32,
    Overrides: AD_GENERAL_PARAMS,
    Anonymous: extern union {
        Guaranteed: AD_GUARANTEED,
        ParamBuffer: [1]PARAM_BUFFER,
    },
};

pub const RSVP_ADSPEC = extern struct {
    ObjectHdr: QOS_OBJECT_HDR,
    GeneralParams: AD_GENERAL_PARAMS,
    NumberOfServices: u32,
    Services: [1]CONTROL_SERVICE,
};

pub const IDPE_ATTR = extern struct {
    PeAttribLength: u16,
    PeAttribType: u8,
    PeAttribSubType: u8,
    PeAttribValue: [4]u8,
};

pub const WBCL_Iterator = extern struct {
    firstElementPtr: ?*anyopaque align(1),
    logSize: u32 align(1),
    currentElementPtr: ?*anyopaque align(1),
    currentElementSize: u32 align(1),
    digestSize: u16 align(1),
    logFormat: u16 align(1),
    numberOfDigests: u32 align(1),
    digestSizes: ?*anyopaque align(1),
    supportedAlgorithms: u32 align(1),
    hashAlgorithm: u16 align(1),
};

pub const TCG_PCClientPCREventStruct = extern struct {
    pcrIndex: u32 align(1),
    eventType: u32 align(1),
    digest: [20]u8 align(1),
    eventDataSize: u32 align(1),
    event: [1]u8 align(1),
};

pub const TCG_PCClientTaggedEventStruct = extern struct {
    EventID: u32 align(1),
    EventDataSize: u32 align(1),
    EventData: [1]u8 align(1),
};

pub const WBCL_LogHdr = extern struct {
    signature: u32 align(1),
    version: u32 align(1),
    entries: u32 align(1),
    length: u32 align(1),
};

pub const tag_SIPAEVENT_VSM_IDK_RSA_INFO = extern struct {
    KeyBitLength: u32 align(1),
    PublicExpLengthBytes: u32 align(1),
    ModulusSizeBytes: u32 align(1),
    PublicKeyData: [1]u8 align(1),
};

pub const tag_SIPAEVENT_VSM_IDK_INFO_PAYLOAD = extern struct {
    KeyAlgID: u32 align(1),
    Anonymous: extern union {
        RsaKeyInfo: tag_SIPAEVENT_VSM_IDK_RSA_INFO,
    } align(1),
};

pub const tag_SIPAEVENT_SI_POLICY_PAYLOAD = extern struct {
    PolicyVersion: u64 align(1),
    PolicyNameLength: u16 align(1),
    HashAlgID: u16 align(1),
    DigestLength: u32 align(1),
    VarLengthData: [1]u8 align(1),
};

pub const tag_SIPAEVENT_REVOCATION_LIST_PAYLOAD = extern struct {
    CreationTime: i64 align(1),
    DigestLength: u32 align(1),
    HashAlgID: u16 align(1),
    Digest: [1]u8 align(1),
};

pub const tag_SIPAEVENT_KSR_SIGNATURE_PAYLOAD = extern struct {
    SignAlgID: u32 align(1),
    SignatureLength: u32 align(1),
    Signature: [1]u8 align(1),
};

pub const tag_SIPAEVENT_SBCP_INFO_PAYLOAD_V1 = extern struct {
    PayloadVersion: u32 align(1),
    VarDataOffset: u32 align(1),
    HashAlgID: u16 align(1),
    DigestLength: u16 align(1),
    Options: u32 align(1),
    SignersCount: u32 align(1),
    VarData: [1]u8 align(1),
};

pub const QOS = extern struct {
    SendingFlowspec: FLOWSPEC,
    ReceivingFlowspec: FLOWSPEC,
    ProviderSpecific: WSABUF,
};

//--------------------------------------------------------------------------------
// Section: Functions (31)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSCreateHandle(
    Version: ?*QOS_VERSION,
    QOSHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSCloseHandle(
    QOSHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSStartTrackingClient(
    QOSHandle: ?HANDLE,
    DestAddr: ?*SOCKADDR,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSStopTrackingClient(
    QOSHandle: ?HANDLE,
    DestAddr: ?*SOCKADDR,
    Flags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSEnumerateFlows(
    QOSHandle: ?HANDLE,
    Size: ?*u32,
    // TODO: what to do with BytesParamIndex 1?
    Buffer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSAddSocketToFlow(
    QOSHandle: ?HANDLE,
    Socket: ?SOCKET,
    DestAddr: ?*SOCKADDR,
    TrafficType: QOS_TRAFFIC_TYPE,
    Flags: u32,
    FlowId: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
// This function from dll 'qwave' is being skipped because it has some sort of issue
pub fn QOSRemoveSocketFromFlow() void {
    @panic("this function is not working");
}

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSSetFlow(
    QOSHandle: ?HANDLE,
    FlowId: u32,
    Operation: QOS_SET_FLOW,
    Size: u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
    Flags: u32,
    Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSQueryFlow(
    QOSHandle: ?HANDLE,
    FlowId: u32,
    Operation: QOS_QUERY_FLOW,
    Size: ?*u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
    Flags: u32,
    Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSNotifyFlow(
    QOSHandle: ?HANDLE,
    FlowId: u32,
    Operation: QOS_NOTIFY_FLOW,
    Size: ?*u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
    Flags: u32,
    Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "qwave" fn QOSCancel(
    QOSHandle: ?HANDLE,
    Overlapped: ?*OVERLAPPED,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcRegisterClient(
    TciVersion: u32,
    ClRegCtx: ?HANDLE,
    ClientHandlerList: ?*TCI_CLIENT_FUNC_LIST,
    pClientHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcEnumerateInterfaces(
    ClientHandle: ?HANDLE,
    pBufferSize: ?*u32,
    InterfaceBuffer: ?*TC_IFC_DESCRIPTOR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcOpenInterfaceA(
    pInterfaceName: ?PSTR,
    ClientHandle: ?HANDLE,
    ClIfcCtx: ?HANDLE,
    pIfcHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcOpenInterfaceW(
    pInterfaceName: ?PWSTR,
    ClientHandle: ?HANDLE,
    ClIfcCtx: ?HANDLE,
    pIfcHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcCloseInterface(
    IfcHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcQueryInterface(
    IfcHandle: ?HANDLE,
    pGuidParam: ?*Guid,
    NotifyChange: BOOLEAN,
    pBufferSize: ?*u32,
    // TODO: what to do with BytesParamIndex 3?
    Buffer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcSetInterface(
    IfcHandle: ?HANDLE,
    pGuidParam: ?*Guid,
    BufferSize: u32,
    // TODO: what to do with BytesParamIndex 2?
    Buffer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcQueryFlowA(
    pFlowName: ?PSTR,
    pGuidParam: ?*Guid,
    pBufferSize: ?*u32,
    // TODO: what to do with BytesParamIndex 2?
    Buffer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcQueryFlowW(
    pFlowName: ?PWSTR,
    pGuidParam: ?*Guid,
    pBufferSize: ?*u32,
    // TODO: what to do with BytesParamIndex 2?
    Buffer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcSetFlowA(
    pFlowName: ?PSTR,
    pGuidParam: ?*Guid,
    BufferSize: u32,
    // TODO: what to do with BytesParamIndex 2?
    Buffer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcSetFlowW(
    pFlowName: ?PWSTR,
    pGuidParam: ?*Guid,
    BufferSize: u32,
    // TODO: what to do with BytesParamIndex 2?
    Buffer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcAddFlow(
    IfcHandle: ?HANDLE,
    ClFlowCtx: ?HANDLE,
    Flags: u32,
    pGenericFlow: ?*TC_GEN_FLOW,
    pFlowHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcGetFlowNameA(
    FlowHandle: ?HANDLE,
    StrSize: u32,
    pFlowName: [*:0]u8,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcGetFlowNameW(
    FlowHandle: ?HANDLE,
    StrSize: u32,
    pFlowName: [*:0]u16,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcModifyFlow(
    FlowHandle: ?HANDLE,
    pGenericFlow: ?*TC_GEN_FLOW,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcAddFilter(
    FlowHandle: ?HANDLE,
    pGenericFilter: ?*TC_GEN_FILTER,
    pFilterHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcDeregisterClient(
    ClientHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcDeleteFlow(
    FlowHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcDeleteFilter(
    FilterHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "traffic" fn TcEnumerateFlows(
    IfcHandle: ?HANDLE,
    pEnumHandle: ?*?HANDLE,
    pFlowCount: ?*u32,
    pBufSize: ?*u32,
    Buffer: ?*ENUMERATION_BUFFER,
) callconv(@import("std").os.windows.WINAPI) u32;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (4)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {
        pub const TcOpenInterface = thismodule.TcOpenInterfaceA;
        pub const TcQueryFlow = thismodule.TcQueryFlowA;
        pub const TcSetFlow = thismodule.TcSetFlowA;
        pub const TcGetFlowName = thismodule.TcGetFlowNameA;
    },
    .wide => struct {
        pub const TcOpenInterface = thismodule.TcOpenInterfaceW;
        pub const TcQueryFlow = thismodule.TcQueryFlowW;
        pub const TcSetFlow = thismodule.TcSetFlowW;
        pub const TcGetFlowName = thismodule.TcGetFlowNameW;
    },
    .unspecified => if (@import("builtin").is_test) struct {
        pub const TcOpenInterface = *opaque {};
        pub const TcQueryFlow = *opaque {};
        pub const TcSetFlow = *opaque {};
        pub const TcGetFlowName = *opaque {};
    } else struct {
        pub const TcOpenInterface = @compileError("'TcOpenInterface' requires that UNICODE be set to true or false in the root module");
        pub const TcQueryFlow = @compileError("'TcQueryFlow' requires that UNICODE be set to true or false in the root module");
        pub const TcSetFlow = @compileError("'TcSetFlow' requires that UNICODE be set to true or false in the root module");
        pub const TcGetFlowName = @compileError("'TcGetFlowName' requires that UNICODE be set to true or false in the root module");
    },
};
//--------------------------------------------------------------------------------
// Section: Imports (12)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const BOOLEAN = @import("../foundation.zig").BOOLEAN;
const HANDLE = @import("../foundation.zig").HANDLE;
const IN_ADDR = @import("../networking/win_sock.zig").IN_ADDR;
const NETWORK_ADDRESS_LIST = @import("../network_management/ndis.zig").NETWORK_ADDRESS_LIST;
const OVERLAPPED = @import("../system/io.zig").OVERLAPPED;
const PSTR = @import("../foundation.zig").PSTR;
const PWSTR = @import("../foundation.zig").PWSTR;
const SOCKADDR = @import("../networking/win_sock.zig").SOCKADDR;
const SOCKET = @import("../networking/win_sock.zig").SOCKET;
const WSABUF = @import("../networking/win_sock.zig").WSABUF;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "PALLOCMEM")) {
        _ = PALLOCMEM;
    }
    if (@hasDecl(@This(), "PFREEMEM")) {
        _ = PFREEMEM;
    }
    if (@hasDecl(@This(), "CBADMITRESULT")) {
        _ = CBADMITRESULT;
    }
    if (@hasDecl(@This(), "CBGETRSVPOBJECTS")) {
        _ = CBGETRSVPOBJECTS;
    }
    if (@hasDecl(@This(), "TCI_NOTIFY_HANDLER")) {
        _ = TCI_NOTIFY_HANDLER;
    }
    if (@hasDecl(@This(), "TCI_ADD_FLOW_COMPLETE_HANDLER")) {
        _ = TCI_ADD_FLOW_COMPLETE_HANDLER;
    }
    if (@hasDecl(@This(), "TCI_MOD_FLOW_COMPLETE_HANDLER")) {
        _ = TCI_MOD_FLOW_COMPLETE_HANDLER;
    }
    if (@hasDecl(@This(), "TCI_DEL_FLOW_COMPLETE_HANDLER")) {
        _ = TCI_DEL_FLOW_COMPLETE_HANDLER;
    }

    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
