|
|
/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
spd.idl
Abstract:
IDL file for IPSec WINAPIs.
Author:
krishnaG 21-September-1999
Environment:
User Level: Win32
Revision History:
abhisheV 29-September-1999 Added the structures. Added the rpc prototypes.
--*/
[ uuid(12345678-1234-ABCD-EF00-0123456789AB), version(1.0), pointer_default(unique) ]
interface winipsec { import "import.idl";
typedef [context_handle] void * TRANSPORTFILTER_HANDLE;
typedef [context_handle] void * TUNNELFILTER_HANDLE;
typedef [context_handle] void * MMFILTER_HANDLE;
typedef [context_handle] void * IKENEGOTIATION_HANDLE;
typedef [context_handle] void * IKENOTIFY_HANDLE;
typedef [handle] wchar_t * STRING_HANDLE;
typedef struct _TRANSPORT_FILTER_CONTAINER {
[range(0,MIDL_MAX_TRANSPORTFILTER_COUNT)] DWORD dwNumFilters; [size_is(dwNumFilters)] PTRANSPORT_FILTER pTransportFilters;
} TRANSPORT_FILTER_CONTAINER, * PTRANSPORT_FILTER_CONTAINER;
typedef struct _TUNNEL_FILTER_CONTAINER {
[range(0,MIDL_MAX_TUNNELFILTER_COUNT)] DWORD dwNumFilters; [size_is(dwNumFilters)] PTUNNEL_FILTER pTunnelFilters;
} TUNNEL_FILTER_CONTAINER, * PTUNNEL_FILTER_CONTAINER;
typedef struct _IPSEC_QM_POLICY_CONTAINER {
[range(0,MIDL_MAX_QMPOLICY_COUNT)] DWORD dwNumPolicies; [size_is(dwNumPolicies)] PIPSEC_QM_POLICY pPolicies;
} IPSEC_QM_POLICY_CONTAINER, * PIPSEC_QM_POLICY_CONTAINER;
typedef struct _IPSEC_MM_POLICY_CONTAINER {
[range(0,MIDL_MAX_MMPOLICY_COUNT)] DWORD dwNumPolicies; [size_is(dwNumPolicies)] PIPSEC_MM_POLICY pPolicies;
} IPSEC_MM_POLICY_CONTAINER, * PIPSEC_MM_POLICY_CONTAINER;
typedef struct _MM_AUTH_METHODS_CONTAINER {
[range(0, MIDL_MAX_MMAUTH_COUNT)] DWORD dwNumAuthMethods; [size_is(dwNumAuthMethods)] PMM_AUTH_METHODS pMMAuthMethods;
} MM_AUTH_METHODS_CONTAINER, * PMM_AUTH_METHODS_CONTAINER;
typedef struct _MM_FILTER_CONTAINER {
[range(0,MIDL_MAX_MMFILTER_COUNT)]DWORD dwNumFilters; [size_is(dwNumFilters)] PMM_FILTER pMMFilters;
} MM_FILTER_CONTAINER, * PMM_FILTER_CONTAINER;
typedef struct _MM_SA_CONTAINER {
[range(0,MIDL_MAX_MMSA_COUNT)] DWORD dwNumMMSAs; [size_is(dwNumMMSAs)] PIPSEC_MM_SA pMMSAs;
} MM_SA_CONTAINER, * PMM_SA_CONTAINER;
typedef struct _IPSEC_STATISTICS_CONTAINER {
[range(0,1)] DWORD dwNumIpsecStats; [size_is(dwNumIpsecStats)] PIPSEC_STATISTICS pIpsecStatistics;
} IPSEC_STATISTICS_CONTAINER, * PIPSEC_STATISTICS_CONTAINER;
typedef struct _QM_SA_CONTAINER {
[range(0,MIDL_MAX_QMSA_COUNT)] DWORD dwNumQMSAs; [size_is(dwNumQMSAs)] PIPSEC_QM_SA pQMSAs;
} QM_SA_CONTAINER, * PQM_SA_CONTAINER;
typedef struct _QM_FILTER_CONTAINER { [range(0,MIDL_MAX_QMFILTER_COUNT)] DWORD dwNumFilters; [size_is(dwNumFilters)] PIPSEC_QM_FILTER pQMFilters;
} QM_FILTER_CONTAINER, * PQM_FILTER_CONTAINER;
typedef struct _IPSEC_INTERFACE_CONTAINER {
[range(0,MIDL_MAX_INTERFACE_COUNT)] DWORD dwNumInterfaces; [size_is(dwNumInterfaces)] PIPSEC_INTERFACE_INFO pIpsecInterfaces;
} IPSEC_INTERFACE_CONTAINER, * PIPSEC_INTERFACE_CONTAINER;
typedef struct _SPD_POLICY_STATE_CONTAINER {
[range(0,1)] DWORD dwNumPolicyStates; [size_is(dwNumPolicyStates)] PSPD_POLICY_STATE pSpdPolicyStates;
} SPD_POLICY_STATE_CONTAINER, * PSPD_POLICY_STATE_CONTAINER;
DWORD RpcAddTransportFilter( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] DWORD dwFlags, [in] PTRANSPORT_FILTER_CONTAINER pFilterContainer, [out] TRANSPORTFILTER_HANDLE * phFilter );
DWORD RpcDeleteTransportFilter( [in, out] TRANSPORTFILTER_HANDLE * phFilter );
DWORD RpcEnumTransportFilters( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PTRANSPORT_FILTER_CONTAINER pTemplateFilterContainer, [in] DWORD dwLevel, [in] GUID gGenericFilterID, [in] DWORD dwPreferredNumEntries, [in, out] PTRANSPORT_FILTER_CONTAINER * ppFilterContainer, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcSetTransportFilter( [in] TRANSPORTFILTER_HANDLE hFilter, [in] DWORD dwVersion, [in] PTRANSPORT_FILTER_CONTAINER pFilterContainer );
DWORD RpcGetTransportFilter( [in] TRANSPORTFILTER_HANDLE hFilter, [in] DWORD dwVersion, [in, out] PTRANSPORT_FILTER_CONTAINER * ppFilterContainer );
DWORD RpcAddQMPolicy( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] DWORD dwFlags, [in] PIPSEC_QM_POLICY_CONTAINER pQMPolicyContainer );
DWORD RpcDeleteQMPolicy( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in, string, unique] LPWSTR pszPolicyName );
DWORD RpcEnumQMPolicies( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PIPSEC_QM_POLICY_CONTAINER pQMTempPolicyContainer, [in] DWORD dwFlags, [in] DWORD dwPreferredNumEntries, [in, out] PIPSEC_QM_POLICY_CONTAINER * ppQMPolicyContainer, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcSetQMPolicy( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in, string, unique] LPWSTR pszPolicyName, [in] PIPSEC_QM_POLICY_CONTAINER pQMPolicyContainer );
DWORD RpcGetQMPolicy( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in, string, unique] LPWSTR pszPolicyName, [in] DWORD dwFlags, [in, out] PIPSEC_QM_POLICY_CONTAINER * ppQMPolicyContainer );
DWORD RpcAddMMPolicy( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] DWORD dwFlags, [in] PIPSEC_MM_POLICY_CONTAINER pMMPolicyContainer );
DWORD RpcDeleteMMPolicy( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in, string, unique] LPWSTR pszPolicyName );
DWORD RpcEnumMMPolicies( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PIPSEC_MM_POLICY_CONTAINER pMMTempPolicyContainer, [in] DWORD dwFlags, [in] DWORD dwPreferredNumEntries, [in, out] PIPSEC_MM_POLICY_CONTAINER * ppMMPolicyContainer, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcSetMMPolicy( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in, string, unique] LPWSTR pszPolicyName, [in] PIPSEC_MM_POLICY_CONTAINER pMMPolicyContainer );
DWORD RpcGetMMPolicy( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in, string, unique] LPWSTR pszPolicyName, [in, out] PIPSEC_MM_POLICY_CONTAINER * ppMMPolicyContainer );
DWORD RpcAddMMFilter( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] DWORD dwFlags, [in] PMM_FILTER_CONTAINER pMMFilterContainer, [out] MMFILTER_HANDLE * phMMFilter );
DWORD RpcDeleteMMFilter( [in, out] MMFILTER_HANDLE * phMMFilter );
DWORD RpcEnumMMFilters( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PMM_FILTER_CONTAINER pTemplateFilterContainer, [in] DWORD dwLevel, [in] GUID gGenericFilterID, [in] DWORD dwPreferredNumEntries, [in, out] PMM_FILTER_CONTAINER * ppMMFilterContainer, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcSetMMFilter( [in] MMFILTER_HANDLE hMMFilter, [in] DWORD dwVersion, [in] PMM_FILTER_CONTAINER pMMFilterContainer );
DWORD RpcGetMMFilter( [in] MMFILTER_HANDLE hMMFilter, [in] DWORD dwVersion, [in, out] PMM_FILTER_CONTAINER * ppMMFilterContainer );
DWORD RpcMatchMMFilter( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PMM_FILTER_CONTAINER pMMFilterContainer, [in] DWORD dwFlags, [in] DWORD dwPreferredNumEntries, [in, out] PMM_FILTER_CONTAINER * ppMMFilterContainer, [in, out] PIPSEC_MM_POLICY_CONTAINER * ppMMPolicyContainer, [in, out] PMM_AUTH_METHODS_CONTAINER * ppMMAuthContainer, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcMatchTransportFilter( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PTRANSPORT_FILTER_CONTAINER pTxFilterContainer, [in] DWORD dwFlags, [in] DWORD dwPreferredNumEntries, [in, out] PTRANSPORT_FILTER_CONTAINER * ppTxFilterContainer, [in, out] PIPSEC_QM_POLICY_CONTAINER * ppQMPolicyContainer, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcGetQMPolicyByID( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] GUID gQMPolicyID, [in] DWORD dwFlags, [in, out] PIPSEC_QM_POLICY_CONTAINER * ppQMPolicyContainer );
DWORD RpcGetMMPolicyByID( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] GUID gMMPolicyID, [in, out] PIPSEC_MM_POLICY_CONTAINER * ppMMPolicyContainer );
DWORD RpcAddMMAuthMethods( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] DWORD dwFlags, [in] PMM_AUTH_METHODS_CONTAINER pMMAuthContainer );
DWORD RpcDeleteMMAuthMethods( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] GUID gMMAuthID );
DWORD RpcEnumMMAuthMethods( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PMM_AUTH_METHODS_CONTAINER pMMTempAuthContainer, [in] DWORD dwFlags, [in] DWORD dwPreferredNumEntries, [in, out] PMM_AUTH_METHODS_CONTAINER * ppMMAuthContainer, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcSetMMAuthMethods( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] GUID gMMAuthID, [in] PMM_AUTH_METHODS_CONTAINER pMMAuthContainer );
DWORD RpcGetMMAuthMethods( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] GUID gMMAuthID, [in, out] PMM_AUTH_METHODS_CONTAINER * ppMMAuthContainer );
DWORD RpcInitiateIKENegotiation( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PQM_FILTER_CONTAINER pQMFilterContainer, [in] DWORD dwClientProcessId, [in] ULONG uhClientEvent, [in] DWORD dwFlags, [in] IPSEC_UDP_ENCAP_CONTEXT UdpEncapContext, [in, out, unique] IKENEGOTIATION_HANDLE * phIKENegotiation );
DWORD RpcQueryIKENegotiationStatus( [in] IKENEGOTIATION_HANDLE hIKENegotiation, [in] DWORD dwVersion, [out, ref] SA_NEGOTIATION_STATUS_INFO * pNegotiationStatus );
DWORD RpcCloseIKENegotiationHandle( [in, out] IKENEGOTIATION_HANDLE * phIKENegotiation );
DWORD RpcEnumMMSAs( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PMM_SA_CONTAINER pMMTemplate, [in] DWORD dwFlags, [in] DWORD dwPreferredNumEntries, [in, out] PMM_SA_CONTAINER * ppMMSAContainer, [in, out, unique] LPDWORD pdwNumEntries, [in, out, unique] LPDWORD pdwTotalMMsAvailable, [in, out, unique] LPDWORD pdwEnumHandle );
DWORD RpcDeleteMMSAs( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PMM_SA_CONTAINER pMMTemplate, [in] DWORD dwFlags );
DWORD RpcDeleteQMSAs( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PQM_SA_CONTAINER pQMSAContainer, [in] DWORD dwFlags );
DWORD RpcQueryIKEStatistics( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [out, ref] IKE_STATISTICS * pIKEStatistics );
DWORD RpcRegisterIKENotifyClient( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] DWORD dwClientProcessId, [in] ULONG uhClientEvent, [in] PQM_SA_CONTAINER pQMSATemplateContainer, [in] DWORD dwFlags, [out] IKENOTIFY_HANDLE * phNotifyHandle );
DWORD RpcQueryIKENotifyData( [in] IKENOTIFY_HANDLE uhNotifyHandle, [in] DWORD dwVersion, [in] DWORD dwFlags, [in, out] PQM_SA_CONTAINER * ppQMSAContainer, [in, out] PDWORD pdwNumEntries );
DWORD RpcCloseIKENotifyHandle( [in, out] IKENOTIFY_HANDLE * phHandle );
DWORD RpcQueryIPSecStatistics( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in, out] PIPSEC_STATISTICS_CONTAINER * ppIpsecStatsContainer );
DWORD RpcEnumQMSAs( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PQM_SA_CONTAINER pQMSATempContainer, [in] DWORD dwFlags, [in] DWORD dwPreferredNumEntries, [in, out] PQM_SA_CONTAINER * ppQMSAContainer, [in, out, unique] LPDWORD pdwNumTotalQMSAs, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcAddTunnelFilter( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] DWORD dwFlags, [in] PTUNNEL_FILTER_CONTAINER pFilterContainer, [out] TUNNELFILTER_HANDLE * phFilter );
DWORD RpcDeleteTunnelFilter( [in, out] TUNNELFILTER_HANDLE * phFilter );
DWORD RpcEnumTunnelFilters( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PTUNNEL_FILTER_CONTAINER pTemplateFilterContainer, [in] DWORD dwLevel, [in] GUID gGenericFilterID, [in] DWORD dwPreferredNumEntries, [in, out] PTUNNEL_FILTER_CONTAINER * ppFilterContainer, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcSetTunnelFilter( [in] TUNNELFILTER_HANDLE hFilter, [in] DWORD dwVersion, [in] PTUNNEL_FILTER_CONTAINER pFilterContainer );
DWORD RpcGetTunnelFilter( [in] TUNNELFILTER_HANDLE hFilter, [in] DWORD dwVersion, [in, out] PTUNNEL_FILTER_CONTAINER * ppFilterContainer );
DWORD RpcMatchTunnelFilter( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PTUNNEL_FILTER_CONTAINER pTnFilterContainer, [in] DWORD dwFlags, [in] DWORD dwPreferredNumEntries, [in, out] PTUNNEL_FILTER_CONTAINER * ppTnFilterContainer, [in, out] PIPSEC_QM_POLICY_CONTAINER * ppQMPolicyContainer, [in, out, unique] LPDWORD pdwResumeHandle );
DWORD RpcOpenMMFilterHandle( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PMM_FILTER_CONTAINER pMMFilterContainer, [out] MMFILTER_HANDLE * phMMFilter );
DWORD RpcCloseMMFilterHandle( [in, out] MMFILTER_HANDLE * phMMFilter );
DWORD RpcOpenTransportFilterHandle( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PTRANSPORT_FILTER_CONTAINER pFilterContainer, [out] TRANSPORTFILTER_HANDLE * phFilter );
DWORD RpcCloseTransportFilterHandle( [in, out] TRANSPORTFILTER_HANDLE * phFilter );
DWORD RpcOpenTunnelFilterHandle( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PTUNNEL_FILTER_CONTAINER pFilterContainer, [out] TUNNELFILTER_HANDLE * phFilter );
DWORD RpcCloseTunnelFilterHandle( [in, out] TUNNELFILTER_HANDLE * phFilter );
DWORD RpcEnumIpsecInterfaces( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] PIPSEC_INTERFACE_CONTAINER pIpsecIfTempContainer, [in] DWORD dwFlags, [in] DWORD dwPreferredNumEntries, [in, out] PIPSEC_INTERFACE_CONTAINER * ppIpsecIfContainer, [in, out, unique] LPDWORD pdwNumTotalInterfaces, [in, out, unique] LPDWORD pdwResumeHandle );
#define MAX_ADDSA_KEYLEN 1000
DWORD RpcAddSAs( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in] IPSEC_SA_DIRECTION SADirection, [in,out] PIPSEC_QM_POLICY_CONTAINER pQMPolicyContainer, [in] PQM_FILTER_CONTAINER pQMFilterContainer, [in, out] ULONG * puhLarvalContext, [in,range(0,MAX_ADDSA_KEYLEN)] DWORD dwInboundKeyMatLen, [in, size_is(dwInboundKeyMatLen)] BYTE * pInboundKeyMat, [in,range(0,MAX_ADDSA_KEYLEN)] DWORD dwOutboundKeyMatLen, [in, size_is(dwOutboundKeyMatLen)] BYTE *pOutboundKeyMat, [in, size_is(sizeof(IKE_COOKIE_PAIR))] BYTE *pContextInfo, [in] UDP_ENCAP_INFO EncapInfo, DWORD dwFlags);
DWORD RpcSetConfigurationVariables( [in, string, unique] STRING_HANDLE pServerName, [in] IKE_CONFIG IKEConfig );
DWORD RpcGetConfigurationVariables( [in, string, unique] STRING_HANDLE pServerName, [out, ref] IKE_CONFIG *pIKEConfig );
DWORD RpcQuerySpdPolicyState( [in, string, unique] STRING_HANDLE pServerName, [in] DWORD dwVersion, [in, out] PSPD_POLICY_STATE_CONTAINER * ppSpdPolicyStateContainer );
}
|