Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

696 lines
17 KiB

/*++
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
);
}