|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  | #ifndef _INC_FWPMTYPES | 
|  | #define _INC_FWPMTYPES | 
|  | #include <fwptypes.h> | 
|  | #include <ipsectypes.h> | 
|  | #include <iketypes.h> | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  | #if (_WIN32_WINNT >= 0x0600) | 
|  |  | 
|  | typedef enum FWPM_PROVIDER_CONTEXT_TYPE_ { | 
|  | FWPM_IPSEC_KEYING_CONTEXT, | 
|  | FWPM_IPSEC_IKE_QM_TRANSPORT_CONTEXT, | 
|  | FWPM_IPSEC_IKE_QM_TUNNEL_CONTEXT, | 
|  | FWPM_IPSEC_AUTHIP_QM_TRANSPORT_CONTEXT, | 
|  | FWPM_IPSEC_AUTHIP_QM_TUNNEL_CONTEXT, | 
|  | FWPM_IPSEC_IKE_MM_CONTEXT, | 
|  | FWPM_IPSEC_AUTHIP_MM_CONTEXT, | 
|  | FWPM_CLASSIFY_OPTIONS_CONTEXT, | 
|  | FWPM_GENERAL_CONTEXT, | 
|  | FWPM_IPSEC_IKEV2_QM_TUNNEL_CONTEXT, | 
|  | FWPM_IPSEC_IKEV2_MM_CONTEXT, | 
|  | FWPM_DOSP_CONTEXT, | 
|  | FWPM_PROVIDER_CONTEXT_TYPE_MAX | 
|  | } FWPM_PROVIDER_CONTEXT_TYPE; | 
|  |  | 
|  | typedef enum FWPM_NET_EVENT_TYPE_ { | 
|  | FWPM_NET_EVENT_TYPE_IKEEXT_MM_FAILURE, | 
|  | FWPM_NET_EVENT_TYPE_IKEEXT_QM_FAILURE, | 
|  | FWPM_NET_EVENT_TYPE_IKEEXT_EM_FAILURE, | 
|  | FWPM_NET_EVENT_TYPE_CLASSIFY_DROP, | 
|  | FWPM_NET_EVENT_TYPE_IPSEC_KERNEL_DROP, | 
|  | FWPM_NET_EVENT_TYPE_IPSEC_DOSP_DROP, | 
|  | FWPM_NET_EVENT_TYPE_MAX | 
|  | } FWPM_NET_EVENT_TYPE; | 
|  |  | 
|  | typedef struct FWPM_ACTION0_ { | 
|  | FWP_ACTION_TYPE type; | 
|  | __C89_NAMELESS union { | 
|  | GUID filterType; | 
|  | GUID calloutKey; | 
|  | }; | 
|  | } FWPM_ACTION0; | 
|  |  | 
|  | typedef struct FWPM_DISPLAY_DATA0_ { | 
|  | wchar_t *name; | 
|  | wchar_t *description; | 
|  | } FWPM_DISPLAY_DATA0; | 
|  |  | 
|  | typedef struct FWPM_SESSION0_ { | 
|  | GUID               sessionKey; | 
|  | FWPM_DISPLAY_DATA0 displayData; | 
|  | UINT32             flags; | 
|  | UINT32             txnWaitTimeoutInMSec; | 
|  | DWORD              processId; | 
|  | SID                *sid; | 
|  | wchar_t            *username; | 
|  | WINBOOL            kernelMode; | 
|  | } FWPM_SESSION0; | 
|  |  | 
|  | typedef struct FWPM_CALLOUT_ENUM_TEMPLATE0_ { | 
|  | GUID *providerKey; | 
|  | GUID layerKey; | 
|  | } FWPM_CALLOUT_ENUM_TEMPLATE0; | 
|  |  | 
|  | typedef struct FWPM_CALLOUT_SUBSCRIPTION0_ { | 
|  | FWPM_CALLOUT_ENUM_TEMPLATE0 *enumTemplate; | 
|  | UINT32                      flags; | 
|  | GUID                        sessionKey; | 
|  | } FWPM_CALLOUT_SUBSCRIPTION0; | 
|  |  | 
|  | typedef enum FWPM_CHANGE_TYPE_ { | 
|  | FWPM_CHANGE_ADD        = 1, | 
|  | FWPM_CHANGE_DELETE, | 
|  | FWPM_CHANGE_TYPE_MAX | 
|  | } FWPM_CHANGE_TYPE; | 
|  |  | 
|  | typedef struct FWPM_CALLOUT_CHANGE0_ { | 
|  | FWPM_CHANGE_TYPE changeType; | 
|  | GUID             calloutKey; | 
|  | UINT32           calloutId; | 
|  | } FWPM_CALLOUT_CHANGE0; | 
|  |  | 
|  | typedef struct FWPM_CALLOUT0_ { | 
|  | GUID               calloutKey; | 
|  | FWPM_DISPLAY_DATA0 displayData; | 
|  | UINT32             flags; | 
|  | GUID               *providerKey; | 
|  | FWP_BYTE_BLOB      providerData; | 
|  | GUID               applicableLayer; | 
|  | UINT32             calloutId; | 
|  | } FWPM_CALLOUT0; | 
|  |  | 
|  | typedef struct FWPM_CLASSIFY_OPTION0_ { | 
|  | FWP_CLASSIFY_OPTION_TYPE type; | 
|  | FWP_VALUE0               value; | 
|  | } FWPM_CLASSIFY_OPTION0; | 
|  |  | 
|  | typedef struct FWPM_CLASSIFY_OPTIONS0_ { | 
|  | UINT32                numOptions; | 
|  | FWPM_CLASSIFY_OPTION0 *options; | 
|  | } FWPM_CLASSIFY_OPTIONS0; | 
|  |  | 
|  | typedef enum FWPM_ENGINE_OPTION_ { | 
|  | FWPM_ENGINE_COLLECT_NET_EVENTS, | 
|  | FWPM_ENGINE_NET_EVENT_MATCH_ANY_KEYWORDS, | 
|  | FWPM_ENGINE_NAME_CACHE, | 
|  | FWPM_ENGINE_OPTION_MAX | 
|  | } FWPM_ENGINE_OPTION; | 
|  |  | 
|  | typedef enum FWPM_FIELD_TYPE_ { | 
|  | FWPM_FIELD_RAW_DATA, | 
|  | FWPM_FIELD_IP_ADDRESS, | 
|  | FWPM_FIELD_FLAGS, | 
|  | FWPM_FIELD_TYPE_MAX | 
|  | } FWPM_FIELD_TYPE; | 
|  |  | 
|  | typedef struct FWPM_FIELD0_ { | 
|  | GUID            *fieldKey; | 
|  | FWPM_FIELD_TYPE type; | 
|  | FWP_DATA_TYPE   dataType; | 
|  | } FWPM_FIELD0; | 
|  |  | 
|  | typedef struct FWPM_FILTER_CHANGE0_ { | 
|  | FWPM_CHANGE_TYPE changeType; | 
|  | GUID             filterKey; | 
|  | UINT64           filterId; | 
|  | } FWPM_FILTER_CHANGE0; | 
|  |  | 
|  | typedef struct FWPM_FILTER_CONDITION0_ { | 
|  | GUID                 fieldKey; | 
|  | FWP_MATCH_TYPE       matchType; | 
|  | FWP_CONDITION_VALUE0 conditionValue; | 
|  | } FWPM_FILTER_CONDITION0; | 
|  |  | 
|  | typedef struct FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0_ { | 
|  | GUID                       *providerKey; | 
|  | FWPM_PROVIDER_CONTEXT_TYPE providerContextType; | 
|  | } FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0; | 
|  |  | 
|  | typedef struct FWPM_FILTER_ENUM_TEMPLATE0_ { | 
|  | GUID                                 *providerKey; | 
|  | GUID                                 layerKey; | 
|  | FWP_FILTER_ENUM_TYPE                 enumType; | 
|  | UINT32                               flags; | 
|  | FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0 *providerContextTemplate; | 
|  | UINT32                               numFilterConditions; | 
|  | FWPM_FILTER_CONDITION0               *filterCondition; | 
|  | UINT32                               actionMask; | 
|  | GUID                                 *calloutKey; | 
|  | } FWPM_FILTER_ENUM_TEMPLATE0; | 
|  |  | 
|  | typedef struct FWPM_FILTER_SUBSCRIPTION0_ { | 
|  | FWPM_FILTER_ENUM_TEMPLATE0 *enumTemplate; | 
|  | UINT32                     flags; | 
|  | GUID                       sessionKey; | 
|  | } FWPM_FILTER_SUBSCRIPTION0; | 
|  |  | 
|  | typedef struct FWPM_FILTER0_ { | 
|  | GUID                   filterKey; | 
|  | FWPM_DISPLAY_DATA0     displayData; | 
|  | UINT32                 flags; | 
|  | GUID                   *providerKey; | 
|  | FWP_BYTE_BLOB          providerData; | 
|  | GUID                   layerKey; | 
|  | GUID                   subLayerKey; | 
|  | FWP_VALUE0             weight; | 
|  | UINT32                 numFilterConditions; | 
|  | FWPM_FILTER_CONDITION0 *filterCondition; | 
|  | FWPM_ACTION0           action; | 
|  | __C89_NAMELESS union { | 
|  | UINT64 rawContext; | 
|  | GUID   providerContextKey; | 
|  | }; | 
|  | GUID                   *reserved; | 
|  | UINT64                 filterId; | 
|  | FWP_VALUE0             effectiveWeight; | 
|  | } FWPM_FILTER0; | 
|  |  | 
|  | typedef struct FWPM_LAYER_ENUM_TEMPLATE0_ { | 
|  | UINT64 reserved; | 
|  | } FWPM_LAYER_ENUM_TEMPLATE0; | 
|  |  | 
|  | typedef struct FWPM_LAYER0_ { | 
|  | GUID               layerKey; | 
|  | FWPM_DISPLAY_DATA0 displayData; | 
|  | UINT32             flags; | 
|  | UINT32             numFields; | 
|  | FWPM_FIELD0        *field; | 
|  | GUID               defaultSubLayerKey; | 
|  | UINT16             layerId; | 
|  | } FWPM_LAYER0; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_CLASSIFY_DROP0_ { | 
|  | UINT64 filterId; | 
|  | UINT16 layerId; | 
|  | } FWPM_NET_EVENT_CLASSIFY_DROP0; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_ENUM_TEMPLATE0_ { | 
|  | FILETIME               startTime; | 
|  | FILETIME               endTime; | 
|  | UINT32                 numFilterConditions; | 
|  | FWPM_FILTER_CONDITION0 *filterCondition; | 
|  | } FWPM_NET_EVENT_ENUM_TEMPLATE0; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_HEADER0_ { | 
|  | FILETIME       timeStamp; | 
|  | UINT32         flags; | 
|  | FWP_IP_VERSION ipVersion; | 
|  | UINT8          ipProtocol; | 
|  | __C89_NAMELESS union { | 
|  | UINT32           localAddrV4; | 
|  | FWP_BYTE_ARRAY16 localAddrV6; | 
|  | }; | 
|  | __C89_NAMELESS union { | 
|  | UINT32           remoteAddrV4; | 
|  | FWP_BYTE_ARRAY16 remoteAddrV6; | 
|  | }; | 
|  | UINT16         localPort; | 
|  | UINT16         remotePort; | 
|  | UINT32         scopeId; | 
|  | FWP_BYTE_BLOB  appId; | 
|  | SID            *userId; | 
|  | } FWPM_NET_EVENT_HEADER0; | 
|  |  | 
|  | #define IKEEXT_CERT_HASH_LEN 20 | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_IKEEXT_UM_FAILURE0_ { | 
|  | UINT32                            failureErrorCode; | 
|  | IPSEC_FAILURE_POINT               failurePoint; | 
|  | UINT32                            flags; | 
|  | IKEEXT_EM_SA_STATE                emState; | 
|  | IKEEXT_SA_ROLE                    saRole; | 
|  | IKEEXT_AUTHENTICATION_METHOD_TYPE emAuthMethod; | 
|  | UINT8                             endCertHash[IKEEXT_CERT_HASH_LEN]; | 
|  | UINT64                            mmId; | 
|  | UINT64                            qmFilterId; | 
|  | } FWPM_NET_EVENT_IKEEXT_UM_FAILURE0; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_IKEEXT_MM_FAILURE0_ { | 
|  | UINT32                            failureErrorCode; | 
|  | IPSEC_FAILURE_POINT               failurePoint; | 
|  | UINT32                            flags; | 
|  | IKEEXT_KEY_MODULE_TYPE            keyingModuleType; | 
|  | IKEEXT_MM_SA_STATE                mmState; | 
|  | IKEEXT_SA_ROLE                    saRole; | 
|  | IKEEXT_AUTHENTICATION_METHOD_TYPE mmAuthMethod; | 
|  | UINT8                             endCertHash[IKEEXT_CERT_HASH_LEN]; | 
|  | UINT64                            mmId; | 
|  | UINT64                            mmFilterId; | 
|  | } FWPM_NET_EVENT_IKEEXT_MM_FAILURE0; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 { | 
|  | UINT32                 failureErrorCode; | 
|  | IPSEC_FAILURE_POINT    failurePoint; | 
|  | IKEEXT_KEY_MODULE_TYPE keyingModuleType; | 
|  | IKEEXT_QM_SA_STATE     qmState; | 
|  | IKEEXT_SA_ROLE         saRole; | 
|  | IPSEC_TRAFFIC_TYPE     saTrafficType; | 
|  | __C89_NAMELESS union { | 
|  | FWP_CONDITION_VALUE0 localSubNet; | 
|  | }; | 
|  | __C89_NAMELESS union { | 
|  | FWP_CONDITION_VALUE0 remoteSubNet; | 
|  | }; | 
|  | UINT64                 qmFilterId; | 
|  | } FWPM_NET_EVENT_IKEEXT_QM_FAILURE0; | 
|  |  | 
|  | typedef UINT32 IPSEC_SA_SPI; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_IPSEC_KERNEL_DROP0_ { | 
|  | INT32         failureStatus; | 
|  | FWP_DIRECTION direction; | 
|  | IPSEC_SA_SPI  spi; | 
|  | UINT64        filterId; | 
|  | UINT16        layerId; | 
|  | } FWPM_NET_EVENT_IPSEC_KERNEL_DROP0; | 
|  |  | 
|  | #if (_WIN32_WINNT >= 0x0601) | 
|  | typedef struct FWPM_NET_EVENT_IPSEC_DOSP_DROP0_ { | 
|  | FWP_IP_VERSION ipVersion; | 
|  | __C89_NAMELESS union { | 
|  | UINT32 publicHostV4Addr; | 
|  | UINT8  publicHostV6Addr[16]; | 
|  | }; | 
|  | __C89_NAMELESS union { | 
|  | UINT32 internalHostV4Addr; | 
|  | UINT8  internalHostV6Addr[16]; | 
|  | }; | 
|  | INT32          failureStatus; | 
|  | FWP_DIRECTION  direction; | 
|  | } FWPM_NET_EVENT_IPSEC_DOSP_DROP0; | 
|  | #endif /*(_WIN32_WINNT >= 0x0601)*/ | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_IKEEXT_EM_FAILURE0_ { | 
|  | UINT32                            failureErrorCode; | 
|  | IPSEC_FAILURE_POINT               failurePoint; | 
|  | UINT32                            flags; | 
|  | IKEEXT_EM_SA_STATE                emState; | 
|  | IKEEXT_SA_ROLE                    saRole; | 
|  | IKEEXT_AUTHENTICATION_METHOD_TYPE emAuthMethod; | 
|  | UINT8                             endCertHash[IKEEXT_CERT_HASH_LEN]; | 
|  | UINT64                            mmId; | 
|  | UINT64                            qmFilterId; | 
|  | } FWPM_NET_EVENT_IKEEXT_EM_FAILURE0; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT0_ { | 
|  | FWPM_NET_EVENT_HEADER0 header; | 
|  | FWPM_NET_EVENT_TYPE    type; | 
|  | __C89_NAMELESS union { | 
|  | FWPM_NET_EVENT_IKEEXT_MM_FAILURE0 *ikeMmFailure; | 
|  | FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 *ikeQmFailure; | 
|  | FWPM_NET_EVENT_IKEEXT_EM_FAILURE0 *ikeEmFailure; | 
|  | FWPM_NET_EVENT_CLASSIFY_DROP0     *classifyDrop; | 
|  | FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop; | 
|  | #if (_WIN32_WINNT >= 0x0601) | 
|  | FWPM_NET_EVENT_IPSEC_DOSP_DROP0   *idpDrop; | 
|  | #endif /*(_WIN32_WINNT >= 0x0601)*/ | 
|  | }; | 
|  | } FWPM_NET_EVENT0; | 
|  |  | 
|  | typedef struct FWPM_PROVIDER_CHANGE0_ { | 
|  | FWPM_CHANGE_TYPE changeType; | 
|  | GUID             providerKey; | 
|  | } FWPM_PROVIDER_CHANGE0; | 
|  |  | 
|  | typedef struct FWPM_PROVIDER_CONTEXT_CHANGE0_ { | 
|  | FWPM_CHANGE_TYPE changeType; | 
|  | GUID             providerContextKey; | 
|  | UINT64           providerContextId; | 
|  | } FWPM_PROVIDER_CONTEXT_CHANGE0; | 
|  |  | 
|  | typedef struct FWPM_PROVIDER_CONTEXT_SUBSCRIPTION0_ { | 
|  | FWPM_PROVIDER_CONTEXT_ENUM_TEMPLATE0 *enumTemplate; | 
|  | UINT32                               flags; | 
|  | GUID                                 sessionKey; | 
|  | } FWPM_PROVIDER_CONTEXT_SUBSCRIPTION0; | 
|  |  | 
|  | typedef struct FWPM_PROVIDER_CONTEXT0_ { | 
|  | GUID                       providerContextKey; | 
|  | FWPM_DISPLAY_DATA0         displayData; | 
|  | UINT32                     flags; | 
|  | GUID                       *providerKey; | 
|  | FWP_BYTE_BLOB              providerData; | 
|  | FWPM_PROVIDER_CONTEXT_TYPE type; | 
|  | __C89_NAMELESS union { | 
|  | IPSEC_KEYING_POLICY0    *keyingPolicy; | 
|  | IPSEC_TRANSPORT_POLICY0 *ikeQmTransportPolicy; | 
|  | IPSEC_TUNNEL_POLICY0    *ikeQmTunnelPolicy; | 
|  | IPSEC_TRANSPORT_POLICY0 *authipQmTransportPolicy; | 
|  | IPSEC_TUNNEL_POLICY0    *authipQmTunnelPolicy; | 
|  | IKEEXT_POLICY0          *ikeMmPolicy; | 
|  | IKEEXT_POLICY0          *authIpMmPolicy; | 
|  | FWP_BYTE_BLOB           *dataBuffer; | 
|  | FWPM_CLASSIFY_OPTIONS0  *classifyOptions; | 
|  | }; | 
|  | UINT64                     providerContextId; | 
|  | } FWPM_PROVIDER_CONTEXT0; | 
|  |  | 
|  | typedef struct FWPM_PROVIDER_ENUM_TEMPLATE0_ { | 
|  | UINT64 reserved; | 
|  | } FWPM_PROVIDER_ENUM_TEMPLATE0; | 
|  |  | 
|  | typedef struct FWPM_PROVIDER_SUBSCRIPTION0_ { | 
|  | FWPM_PROVIDER_ENUM_TEMPLATE0 *enumTemplate; | 
|  | UINT32                       flags; | 
|  | GUID                         sessionKey; | 
|  | } FWPM_PROVIDER_SUBSCRIPTION0; | 
|  |  | 
|  | typedef struct FWPM_PROVIDER0_ { | 
|  | GUID               providerKey; | 
|  | FWPM_DISPLAY_DATA0 displayData; | 
|  | UINT32             flags; | 
|  | FWP_BYTE_BLOB      providerData; | 
|  | wchar_t            *serviceName; | 
|  | } FWPM_PROVIDER0; | 
|  |  | 
|  | typedef struct FWPM_SESSION_ENUM_TEMPLATE0_ { | 
|  | UINT64 reserved; | 
|  | } FWPM_SESSION_ENUM_TEMPLATE0; | 
|  |  | 
|  | typedef struct FWPM_SUBLAYER_CHANGE0_ { | 
|  | FWPM_CHANGE_TYPE changeType; | 
|  | GUID             subLayerKey; | 
|  | } FWPM_SUBLAYER_CHANGE0; | 
|  |  | 
|  | typedef struct FWPM_SUBLAYER_ENUM_TEMPLATE0_ { | 
|  | GUID *providerKey; | 
|  | } FWPM_SUBLAYER_ENUM_TEMPLATE0; | 
|  |  | 
|  | typedef struct FWPM_SUBLAYER_SUBSCRIPTION0_ { | 
|  | FWPM_SUBLAYER_ENUM_TEMPLATE0 *enumTemplate; | 
|  | UINT32                       flags; | 
|  | GUID                         sessionKey; | 
|  | } FWPM_SUBLAYER_SUBSCRIPTION0; | 
|  |  | 
|  | typedef struct FWPM_SUBLAYER0_ { | 
|  | GUID               subLayerKey; | 
|  | FWPM_DISPLAY_DATA0 displayData; | 
|  | UINT16             flags; | 
|  | GUID               *providerKey; | 
|  | FWP_BYTE_BLOB      providerData; | 
|  | UINT16             weight; | 
|  | } FWPM_SUBLAYER0; | 
|  |  | 
|  | #endif /*(_WIN32_WINNT >= 0x0600)*/ | 
|  |  | 
|  | #if (_WIN32_WINNT >= 0x0601) | 
|  |  | 
|  | typedef enum FWPM_SYSTEM_PORT_TYPE_ { | 
|  | FWPM_SYSTEM_PORT_RPC_EPMAP, | 
|  | FWPM_SYSTEM_PORT_TEREDO, | 
|  | FWPM_SYSTEM_PORT_IPHTTPS_IN, | 
|  | FWPM_SYSTEM_PORT_IPHTTPS_OUT, | 
|  | FWPM_SYSTEM_PORT_TYPE_MAX | 
|  | } FWPM_SYSTEM_PORT_TYPE; | 
|  |  | 
|  | typedef enum  { | 
|  | DlUnicast, | 
|  | DlMulticast, | 
|  | DlBroadcast | 
|  | } DL_ADDRESS_TYPE, *PDL_ADDRESS_TYPE; | 
|  |  | 
|  | typedef struct FWPM_PROVIDER_CONTEXT1_ { | 
|  | GUID                       providerContextKey; | 
|  | FWPM_DISPLAY_DATA0         displayData; | 
|  | UINT32                     flags; | 
|  | GUID                       *providerKey; | 
|  | FWP_BYTE_BLOB              providerData; | 
|  | FWPM_PROVIDER_CONTEXT_TYPE type; | 
|  | __C89_NAMELESS union { | 
|  | IPSEC_KEYING_POLICY0    *keyingPolicy; | 
|  | IPSEC_TRANSPORT_POLICY1 *ikeQmTransportPolicy; | 
|  | IPSEC_TUNNEL_POLICY1    *ikeQmTunnelPolicy; | 
|  | IPSEC_TRANSPORT_POLICY1 *authipQmTransportPolicy; | 
|  | IPSEC_TUNNEL_POLICY1    *authipQmTunnelPolicy; | 
|  | IKEEXT_POLICY1          *ikeMmPolicy; | 
|  | IKEEXT_POLICY1          *authIpMmPolicy; | 
|  | FWP_BYTE_BLOB           *dataBuffer; | 
|  | FWPM_CLASSIFY_OPTIONS0  *classifyOptions; | 
|  | IPSEC_TUNNEL_POLICY1    *ikeV2QmTunnelPolicy; | 
|  | IKEEXT_POLICY1          *ikeV2MmPolicy; | 
|  | IPSEC_DOSP_OPTIONS0     *idpOptions; | 
|  | }; | 
|  | UINT64                     providerContextId; | 
|  | } FWPM_PROVIDER_CONTEXT1; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_HEADER1_ { | 
|  | FILETIME       timeStamp; | 
|  | UINT32         flags; | 
|  | FWP_IP_VERSION ipVersion; | 
|  | UINT8          ipProtocol; | 
|  | __C89_NAMELESS union { | 
|  | UINT32           localAddrV4; | 
|  | FWP_BYTE_ARRAY16 localAddrV6; | 
|  | }; | 
|  | __C89_NAMELESS union { | 
|  | UINT32           remoteAddrV4; | 
|  | FWP_BYTE_ARRAY16 remoteAddrV6; | 
|  | }; | 
|  | UINT16         localPort; | 
|  | UINT16         remotePort; | 
|  | UINT32         scopeId; | 
|  | FWP_BYTE_BLOB  appId; | 
|  | SID            *userId; | 
|  | __C89_NAMELESS union { | 
|  | __C89_NAMELESS struct { | 
|  | FWP_AF addressFamily; | 
|  | __C89_NAMELESS union { | 
|  | __C89_NAMELESS struct { | 
|  | FWP_BYTE_ARRAY6        dstAddrEth; | 
|  | FWP_BYTE_ARRAY6        srcAddrEth; | 
|  | DL_ADDRESS_TYPE        addrType; | 
|  | FWP_ETHER_ENCAP_METHOD encapMethod; | 
|  | UINT16                 etherType; | 
|  | UINT32                 snapControl; | 
|  | UINT32                 snapOui; | 
|  | UINT16                 vlanTag; | 
|  | UINT64                 ifLuid; | 
|  | }; | 
|  | }; | 
|  | }; | 
|  | }; | 
|  | } FWPM_NET_EVENT_HEADER1; | 
|  |  | 
|  | #define IKEEXT_CERT_HASH_LEN 20 | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_IKEEXT_MM_FAILURE1_ { | 
|  | UINT32                            failureErrorCode; | 
|  | IPSEC_FAILURE_POINT               failurePoint; | 
|  | UINT32                            flags; | 
|  | IKEEXT_KEY_MODULE_TYPE            keyingModuleType; | 
|  | IKEEXT_MM_SA_STATE                mmState; | 
|  | IKEEXT_SA_ROLE                    saRole; | 
|  | IKEEXT_AUTHENTICATION_METHOD_TYPE mmAuthMethod; | 
|  | UINT8                             endCertHash[IKEEXT_CERT_HASH_LEN]; | 
|  | UINT64                            mmId; | 
|  | UINT64                            mmFilterId; | 
|  | wchar_t                           *localPrincipalNameForAuth; | 
|  | wchar_t                           *remotePrincipalNameForAuth; | 
|  | UINT32                            numLocalPrincipalGroupSids; | 
|  | LPWSTR                            *localPrincipalGroupSids; | 
|  | UINT32                            numRemotePrincipalGroupSids; | 
|  | LPWSTR                            *remotePrincipalGroupSids; | 
|  | } FWPM_NET_EVENT_IKEEXT_MM_FAILURE1; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_IKEEXT_EM_FAILURE1_ { | 
|  | UINT32                            failureErrorCode; | 
|  | IPSEC_FAILURE_POINT               failurePoint; | 
|  | UINT32                            flags; | 
|  | IKEEXT_EM_SA_STATE                emState; | 
|  | IKEEXT_SA_ROLE                    saRole; | 
|  | IKEEXT_AUTHENTICATION_METHOD_TYPE emAuthMethod; | 
|  | UINT8                             endCertHash[IKEEXT_CERT_HASH_LEN]; | 
|  | UINT64                            mmId; | 
|  | UINT64                            qmFilterId; | 
|  | wchar_t                           *localPrincipalNameForAuth; | 
|  | wchar_t                           *remotePrincipalNameForAuth; | 
|  | UINT32                            numLocalPrincipalGroupSids; | 
|  | LPWSTR                            *localPrincipalGroupSids; | 
|  | UINT32                            numRemotePrincipalGroupSids; | 
|  | LPWSTR                            *remotePrincipalGroupSids; | 
|  | IPSEC_TRAFFIC_TYPE                saTrafficType; | 
|  | } FWPM_NET_EVENT_IKEEXT_EM_FAILURE1; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_CLASSIFY_DROP1_ { | 
|  | UINT64 filterId; | 
|  | UINT16 layerId; | 
|  | UINT32 reauthReason; | 
|  | UINT32 originalProfile; | 
|  | UINT32 currentProfile; | 
|  | UINT32 msFwpDirection; | 
|  | BOOL   isLoopback; | 
|  | } FWPM_NET_EVENT_CLASSIFY_DROP1; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT1_ { | 
|  | FWPM_NET_EVENT_HEADER1 header; | 
|  | FWPM_NET_EVENT_TYPE    type; | 
|  | __C89_NAMELESS union { | 
|  | FWPM_NET_EVENT_IKEEXT_MM_FAILURE1 *ikeMmFailure; | 
|  | FWPM_NET_EVENT_IKEEXT_QM_FAILURE0 *ikeQmFailure; | 
|  | FWPM_NET_EVENT_IKEEXT_EM_FAILURE1 *ikeEmFailure; | 
|  | FWPM_NET_EVENT_CLASSIFY_DROP1     *classifyDrop; | 
|  | FWPM_NET_EVENT_IPSEC_KERNEL_DROP0 *ipsecDrop; | 
|  | FWPM_NET_EVENT_IPSEC_DOSP_DROP0   *idpDrop; | 
|  | }; | 
|  | } FWPM_NET_EVENT1; | 
|  |  | 
|  | typedef struct FWPM_NET_EVENT_SUBSCRIPTION0_ { | 
|  | FWPM_NET_EVENT_ENUM_TEMPLATE0 *enumTemplate; | 
|  | UINT32                        flags; | 
|  | GUID                          sessionKey; | 
|  | } FWPM_NET_EVENT_SUBSCRIPTION0; | 
|  |  | 
|  | typedef struct FWPM_SYSTEM_PORTS_BY_TYPE0_ { | 
|  | FWPM_SYSTEM_PORT_TYPE type; | 
|  | UINT32                numPorts; | 
|  | UINT16                *ports; | 
|  | } FWPM_SYSTEM_PORTS_BY_TYPE0; | 
|  |  | 
|  | typedef struct FWPM_SYSTEM_PORTS0_ { | 
|  | UINT32                     numTypes; | 
|  | FWPM_SYSTEM_PORTS_BY_TYPE0 *types; | 
|  | } FWPM_SYSTEM_PORTS0; | 
|  |  | 
|  | #endif /*(_WIN32_WINNT >= 0x0601)*/ | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  |  | 
|  | #endif /*_INC_FWPMTYPES*/ |