#define BAIL_ON_WIN32_ERROR(dwError) \ if (dwError) {\ goto error; \ } typedef struct _IPSEC_NFA_OBJECT{ LPWSTR pszDistinguishedName; LPWSTR pszIpsecName; LPWSTR pszIpsecID; DWORD dwIpsecDataType; LPBYTE pIpsecData; DWORD dwIpsecDataLen; LPWSTR pszIpsecOwnersReference; LPWSTR pszIpsecFilterReference; LPWSTR pszIpsecNegPolReference; DWORD dwWhenChanged; LPWSTR pszDescription; }IPSEC_NFA_OBJECT, *PIPSEC_NFA_OBJECT; typedef struct _IPSEC_ISAKMP_OBJECT{ LPWSTR pszDistinguishedName; LPWSTR pszIpsecName; LPWSTR pszIpsecID; DWORD dwIpsecDataType; LPBYTE pIpsecData; DWORD dwIpsecDataLen; LPWSTR * ppszIpsecNFAReferences; DWORD dwNFACount; DWORD dwWhenChanged; }IPSEC_ISAKMP_OBJECT, *PIPSEC_ISAKMP_OBJECT; typedef struct _IPSEC_FILTER_OBJECT{ LPWSTR pszDistinguishedName; LPWSTR pszIpsecName; LPWSTR pszIpsecID; DWORD dwIpsecDataType; LPBYTE pIpsecData; DWORD dwIpsecDataLen; LPWSTR * ppszIpsecNFAReferences; DWORD dwNFACount; DWORD dwWhenChanged; LPWSTR pszDescription; }IPSEC_FILTER_OBJECT, *PIPSEC_FILTER_OBJECT; typedef struct _IPSEC_NEGPOL_OBJECT{ LPWSTR pszDistinguishedName; LPWSTR pszIpsecName; LPWSTR pszIpsecID; DWORD dwIpsecDataType; LPBYTE pIpsecData; DWORD dwIpsecDataLen; LPWSTR pszIpsecNegPolAction; LPWSTR pszIpsecNegPolType; LPWSTR * ppszIpsecNFAReferences; DWORD dwNFACount; DWORD dwWhenChanged; LPWSTR pszDescription; }IPSEC_NEGPOL_OBJECT, *PIPSEC_NEGPOL_OBJECT; typedef struct _IPSEC_POLICY_OBJECT{ LPWSTR pszIpsecOwnersReference; LPWSTR pszIpsecName; LPWSTR pszIpsecID; DWORD dwIpsecDataType; LPBYTE pIpsecData; DWORD dwIpsecDataLen; LPWSTR pszIpsecISAKMPReference; DWORD NumberofRules; DWORD NumberofRulesReturned; LPWSTR * ppszIpsecNFAReferences; PIPSEC_NFA_OBJECT * ppIpsecNFAObjects; DWORD NumberofFilters; PIPSEC_FILTER_OBJECT * ppIpsecFilterObjects; DWORD NumberofNegPols; PIPSEC_NEGPOL_OBJECT *ppIpsecNegPolObjects; DWORD NumberofISAKMPs; PIPSEC_ISAKMP_OBJECT * ppIpsecISAKMPObjects; DWORD dwWhenChanged; LPWSTR pszDescription; }IPSEC_POLICY_OBJECT, *PIPSEC_POLICY_OBJECT;