
//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 2000.
//
//  File:       S D E V . I D L 
//
//  Contents:   IDL file for sample device
//
//  Notes:      
//
//  Author:     mbend   26 Sep 2000
//
//----------------------------------------------------------------------------



cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("//  Microsoft Windows")
cpp_quote("//  Copyright (C) Microsoft Corporation, 1992-2000.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")

cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#pragma warning(disable:4201)")
cpp_quote("#endif")

#ifndef DO_NO_IMPORTS
import "ocidl.idl";
#endif

typedef [v1_enum] enum IOSINFO_DISPIDS
{
     IOSINFO_DISPID_MAGICON = 1,
     IOSINFO_DISPID_OSMAJORVERSION,
     IOSINFO_DISPID_OSMINORVERSION,
     IOSINFO_DISPID_OSBUILDNUMBER,
     IOSINFO_DISPID_OSMACHINENAME
} IOSINFO_DISPIDS;

[
     uuid(34e5bd25-df15-405b-9d92-ab74ad0dc121),
     oleautomation,
     pointer_default(unique)
]
interface IOSInfoService : IUnknown 
{
    [propget, id(IOSINFO_DISPID_OSMAJORVERSION), helpstring("OS Major Version")]
    HRESULT OSMajorVersion([out, retval] LONG *pOSMajorVersion);

    [propget, id(IOSINFO_DISPID_OSMINORVERSION), helpstring("OS Minor Version")]
    HRESULT OSMinorVersion([out, retval] LONG *pOSMinorVersion);

    [propget, id(IOSINFO_DISPID_OSBUILDNUMBER), helpstring("OS Build Number")]
    HRESULT OSBuildNumber([out, retval] LONG *pOSBuildNumber);

    [propget, id(IOSINFO_DISPID_OSMACHINENAME), helpstring("OS Machine Name")]
    HRESULT OSMachineName([out, retval] BSTR *pOSMachineName);

    [id(IOSINFO_DISPID_MAGICON), helpstring("Magic On")]
    HRESULT MagicOn();
};

typedef [v1_enum] enum ICOMMONCONFIG_DISPIDS
{
     ICOMMONCONFIG_DISPID_WANACCESSTYPE,
     ICOMMONCONFIG_DISPID_LAYER1UPSTREAMMAXBITRATE,
     ICOMMONCONFIG_DISPID_LAYER1DOWNSTREAMMAXBITRATE,
     ICOMMONCONFIG_DISPID_PHYSICALLINKSTATUS,
     ICOMMONCONFIG_DISPID_SETENABLEDFORINTERNET,
     ICOMMONCONFIG_DISPID_ENABLEDFORINTERNET,
     ICOMMONCONFIG_DISPID_TOTALBYTESSENT,
     ICOMMONCONFIG_DISPID_TOTALBYTESRECEIVED,
     ICOMMONCONFIG_DISPID_TOTALPACKETSSSENT,
     ICOMMONCONFIG_DISPID_TOTALPACKETSRECEIVED,
     ICOMMONCONFIG_DISPID_WANACCESSPROVIDER,
     ICOMMONCONFIG_DISPID_MAXIMUMACTIVECONNECTIONS,
     ICOMMONCONFIG_DISPID_XPERSONALFIREWALLENABLED,
     ICOMMONCONFIG_DISPID_XUPTIME,
     ICOMMONCONFIG_DISPID_GETCOMMONLINKPROPERTIES,
     ICOMMONCONFIG_DISPID_XGETICSSTATISTICS,
     ICOMMONCONFIG_DISPID_GETTOTALBYTESSENT,
     ICOMMONCONFIG_DISPID_GETTOTALBYTESRECEIVED,
     ICOMMONCONFIG_DISPID_GETTOTALPACKETSSENT,
     ICOMMONCONFIG_DISPID_GETTOTALPACKETSRECEIVED,
} ICOMMONCONFIG_DISPIDS;

[
     uuid(eb453baa-08f1-4235-abf0-521c7aa0eda1),
     oleautomation,
     pointer_default(unique)
]
interface ICommonInterfaceConfigService : IUnknown 
{
    [propget, id(ICOMMONCONFIG_DISPID_WANACCESSTYPE), helpstring("WANAccessType")]
    HRESULT WANAccessType([out, retval] BSTR *pWANAccessType);

    [propget, id(ICOMMONCONFIG_DISPID_LAYER1UPSTREAMMAXBITRATE), helpstring("Layer1UpstreamMaxBitRate")]
    HRESULT Layer1UpstreamMaxBitRate([out, retval] ULONG *pLayer1UpstreamMaxBitRate);

    [propget, id(ICOMMONCONFIG_DISPID_LAYER1DOWNSTREAMMAXBITRATE), helpstring("Layer1DownstreamMaxBitRate")]
    HRESULT Layer1DownstreamMaxBitRate([out, retval] ULONG *pLayer1DownstreamMaxBitRate);

    [propget, id(ICOMMONCONFIG_DISPID_PHYSICALLINKSTATUS), helpstring("PhysicalLinkStatus")]
    HRESULT PhysicalLinkStatus([out, retval] BSTR *pPhysicalLinkStatus);

    [propget, id(ICOMMONCONFIG_DISPID_TOTALBYTESSENT), helpstring("TotalBytesSent")]
    HRESULT TotalBytesSent([out, retval] ULONG *pTotalBytesSent);

    [propget, id(ICOMMONCONFIG_DISPID_TOTALBYTESRECEIVED), helpstring("TotalBytesReceived")]
    HRESULT TotalBytesReceived([out, retval] ULONG *pTotalBytesReceived);

    [propget, id(ICOMMONCONFIG_DISPID_TOTALPACKETSSSENT), helpstring("TotalPacketsSent")]
    HRESULT TotalPacketsSent([out, retval] ULONG *pTotalPacketsSent);

    [propget, id(ICOMMONCONFIG_DISPID_TOTALPACKETSRECEIVED), helpstring("TotalPacketsReceived")]
    HRESULT TotalPacketsReceived([out, retval] ULONG *pTotalPacketsReceived);

    [propget, id(ICOMMONCONFIG_DISPID_WANACCESSPROVIDER), helpstring("WANAccessProvider")]
    HRESULT WANAccessProvider([out, retval] BSTR *pWANAccessProvider);

    [propget, id(ICOMMONCONFIG_DISPID_MAXIMUMACTIVECONNECTIONS), helpstring("MaximumActiveConnections")]
    HRESULT MaximumActiveConnections([out, retval] USHORT *pMaximumActiveConnections);

    [propget, id(ICOMMONCONFIG_DISPID_XPERSONALFIREWALLENABLED), helpstring("PersonalFirewallEnabled")]
    HRESULT X_PersonalFirewallEnabled([out, retval] VARIANT_BOOL* pPersonalFirewallEnabled);

    [propget, id(ICOMMONCONFIG_DISPID_XUPTIME), helpstring("X_Uptime")]
    HRESULT X_Uptime([out, retval] ULONG* pUptime);

    [id(ICOMMONCONFIG_DISPID_GETCOMMONLINKPROPERTIES), helpstring("GetCommonLinkProperties")]
    HRESULT GetCommonLinkProperties([in, out] BSTR* pWANAccessType, [in, out] ULONG* pLayer1UpstreamMaxBitRate, [in, out] ULONG *pLayer1DownstreamMaxBitRate, [in, out] BSTR *pPhysicalLinkStatus);

    [id(ICOMMONCONFIG_DISPID_GETTOTALBYTESSENT), helpstring("GetTotalBytesSent")]
    HRESULT GetTotalBytesSent([in, out] ULONG *pTotalBytesSent);

    [id(ICOMMONCONFIG_DISPID_GETTOTALBYTESRECEIVED), helpstring("GetTotalBytesReceived")]
    HRESULT GetTotalBytesReceived([in, out] ULONG *pTotalBytesReceived);

    [id(ICOMMONCONFIG_DISPID_GETTOTALPACKETSSENT), helpstring("GetTotalPacketsSent")]
    HRESULT GetTotalPacketsSent([in, out] ULONG *pTotalPacketsSent);

    [id(ICOMMONCONFIG_DISPID_GETTOTALPACKETSRECEIVED), helpstring("GetTotalPacketsReceived")]
    HRESULT GetTotalPacketsReceived([in, out] ULONG *pTotalPacketsReceived);

    [id(ICOMMONCONFIG_DISPID_XGETICSSTATISTICS), helpstring("X_GetICSStatistics")]
    HRESULT X_GetICSStatistics([in, out] ULONG *pTotalBytesSent, [in, out] ULONG *pTotalBytesReceived, [in, out] ULONG *pTotalPacketsSent, [in, out] ULONG *pTotalPacketsReceived, [in, out] ULONG *pSpeed, [in, out] ULONG *pUptime);
};


typedef [v1_enum] enum IWANPOTSLINKCONFIG_DISPIDS
{
    IWANPOTSLINKCONFIG_DISPIDS_MAGICON = 1,
    IWANPOTSLINKCONFIG_DISPID_ISPPHONENUMBER,
    IWANPOTSLINKCONFIG_DISPID_ISPINFO,
    IWANPOTSLINKCONFIG_DISPID_LINKTYPE,
    IWANPOTSLINKCONFIG_DISPID_NUMBEROFRETRIES,
    IWANPOTSLINKCONFIG_DISPID_DELAYBETWEENRETRIES,
    IWANPOTSLINKCONFIG_DISPID_GETISPINFO,
    IWANPOTSLINKCONFIG_DISPID_GETCALLRETRYINFO,
} IWANPOTSLINKCONFIG_DISPIDS;

[
     uuid(ea3788a7-84b8-4831-a4f9-9e842d0d44ba),
     oleautomation,
     pointer_default(unique)
]
interface IWANPOTSLinkConfigService : IUnknown 
{
    [propget, id(IWANPOTSLINKCONFIG_DISPID_ISPPHONENUMBER), helpstring("ISPPhoneNumber")]
    HRESULT ISPPhoneNumber([out, retval] BSTR *pISPPhoneNumber);

    [propget, id(IWANPOTSLINKCONFIG_DISPID_ISPINFO), helpstring("ISPInfo")]
    HRESULT ISPInfo([out, retval] BSTR *pISPInfo);

    [propget, id(IWANPOTSLINKCONFIG_DISPID_LINKTYPE), helpstring("LinkType")]
    HRESULT LinkType([out, retval] BSTR *pLinkType);

    [propget, id(IWANPOTSLINKCONFIG_DISPID_NUMBEROFRETRIES), helpstring("NumberOfRetries")]
    HRESULT NumberOfRetries([out, retval] ULONG *pNumberOfRetries);

    [propget, id(IWANPOTSLINKCONFIG_DISPID_DELAYBETWEENRETRIES), helpstring("DelayBetweenRetries")]
    HRESULT DelayBetweenRetries([out, retval] ULONG *pDelayBetweenRetries);

    [id(IWANPOTSLINKCONFIG_DISPID_GETISPINFO), helpstring("GetISPInfo")]
    HRESULT GetISPInfo([in, out] BSTR* pISPPhoneNumber, [in, out] BSTR *pISPInfo, [in, out] BSTR *pLinkType);

    [id(IWANPOTSLINKCONFIG_DISPID_GETCALLRETRYINFO), helpstring("GetCallRetryInfo")]
    HRESULT GetCallRetryInfo([in, out] ULONG* pNumberOfRetries, [in, out] ULONG *pDelayBetweenRetries);
}

typedef [v1_enum] enum IWANIPCONNECTION_DISPIDS
{
    IWANIPCONNECTION_DISPIDS_MAGICON = 1,
    IWANIPCONNECTION_DISPID_CONNECTIONTYPE,
    IWANIPCONNECTION_DISPID_POSSIBLECONNECTIONTYPES,
    IWANIPCONNECTION_DISPID_CONNECTIONSTATUS,
    IWANIPCONNECTION_DISPID_UPTIME,
    IWANIPCONNECTION_DISPID_UPSTREAMMAXBITRATE,
    IWANIPCONNECTION_DISPID_DOWNSTREAMMAXBITRATE,
    IWANIPCONNECTION_DISPID_LASTCONNECTIONERROR,
    IWANIPCONNECTION_DISPID_RSIPAVAILABLE,
    IWANIPCONNECTION_DISPID_NATENABLED,
    IWANIPCONNECTION_DISPID_NAME,
    IWANIPCONNECTION_DISPID_EXTERNALIPADDRESS,
    IWANIPCONNECTION_DISPID_REMOTEHOST,
    IWANIPCONNECTION_DISPID_EXTERNALPORT,
    IWANIPCONNECTION_DISPID_INTERNALPORT,
    IWANIPCONNECTION_DISPID_PORTMAPPINGPROTOCOL,
    IWANIPCONNECTION_DISPID_INTERNALCLIENT,
    IWANIPCONNECTION_DISPID_PORTMAPPINGDESCRIPTION,
    IWANIPCONNECTION_DISPID_PORTMAPPINGENABLED,
    IWANIPCONNECTION_DISPID_PORTMAPPINGLEASEDURATION,
    IWANIPCONNECTION_DISPID_XPORTMAPPINGINDEX,
    IWANIPCONNECTION_DISPID_PORTMAPPINGNUMBEROFENTRIES,
    IWANIPCONNECTION_DISPID_SETCONNECTIONTYPE,
    IWANIPCONNECTION_DISPID_GETCONNECTIONTYPE,
    IWANIPCONNECTION_DISPID_REQUESTCONNECTION,
    IWANIPCONNECTION_DISPID_FORCETERMINATION,
    IWANIPCONNECTION_DISPID_GETSTATUSINFO,
    IWANIPCONNECTION_DISPID_GETNATRSIPSTATUS,
    IWANIPCONNECTION_DISPID_GETLINKLAYERMAXBITRATES,
    IWANIPCONNECTION_DISPID_GETSPECIFICPORTMAPPINGENTRY,
    IWANIPCONNECTION_DISPID_GETGENERICPORTMAPPINGENTRY,
    IWANIPCONNECTION_DISPID_ADDPORTMAPPING,
    IWANIPCONNECTION_DISPID_DELETEPORTMAPPING,
    IWANIPCONNECTION_DISPID_GETEXTERNALIPADDRESS,
} IWANIPCONNECTION_DISPIDS;

[
     uuid(b99a547a-9574-46da-8774-3ecaf70bc12f),
     oleautomation,
     pointer_default(unique)
]
interface IWANIPConnectionService : IUnknown 
{
    [propget, id(IWANIPCONNECTION_DISPID_CONNECTIONTYPE), helpstring("ConnectionType")]
    HRESULT ConnectionType([out, retval] BSTR *pConnectionType);

    [propget, id(IWANIPCONNECTION_DISPID_POSSIBLECONNECTIONTYPES), helpstring("PossibleConnectionTypes")]
    HRESULT PossibleConnectionTypes([out, retval] BSTR *pPossibleConnectionTypes);

    [propget, id(IWANIPCONNECTION_DISPID_CONNECTIONSTATUS), helpstring("ConnectionStatus")]
    HRESULT ConnectionStatus([out, retval] BSTR *pConnectionStatus);

    [propget, id(IWANIPCONNECTION_DISPID_UPTIME), helpstring("Uptime")]
    HRESULT Uptime([out, retval] ULONG *pUptime);

    [propget, id(IWANIPCONNECTION_DISPID_UPSTREAMMAXBITRATE), helpstring("UpstreamMaxBitRate")]
    HRESULT UpstreamMaxBitRate([out, retval] ULONG *pUpstreamMaxBitRate);

    [propget, id(IWANIPCONNECTION_DISPID_DOWNSTREAMMAXBITRATE), helpstring("DownstreamMaxBitRate")]
    HRESULT DownstreamMaxBitRate([out, retval] ULONG *pDownstreamMaxBitRate);

    [propget, id(IWANIPCONNECTION_DISPID_LASTCONNECTIONERROR), helpstring("LastConnectionError")]
    HRESULT LastConnectionError([out, retval] BSTR *pLastConnectionError);

    [propget, id(IWANIPCONNECTION_DISPID_RSIPAVAILABLE), helpstring("RSIPAvailable")]
    HRESULT RSIPAvailable([out, retval] VARIANT_BOOL *pRSIPAvailable);

    [propget, id(IWANIPCONNECTION_DISPID_NATENABLED), helpstring("NATEnabled")]
    HRESULT NATEnabled([out, retval] VARIANT_BOOL *pNATEnabled);

    [propget, id(IWANIPCONNECTION_DISPID_NAME), helpstring("Name")]
    HRESULT X_Name([out, retval] BSTR *pName);

    [propget, id(IWANIPCONNECTION_DISPID_EXTERNALIPADDRESS), helpstring("ExternalIPAddress")]
    HRESULT ExternalIPAddress([out, retval] BSTR *pExternalIPAddress);

    [propget, id(IWANIPCONNECTION_DISPID_REMOTEHOST), helpstring("RemoteHost")]
    HRESULT RemoteHost([out, retval] BSTR *pRemoteHost);

    [propget, id(IWANIPCONNECTION_DISPID_EXTERNALPORT), helpstring("ExternalPort")]
    HRESULT ExternalPort([out, retval] USHORT *pExternalPort);

    [propget, id(IWANIPCONNECTION_DISPID_INTERNALPORT), helpstring("InternalPort")]
    HRESULT InternalPort([out, retval] USHORT *pInternalPort);

    [propget, id(IWANIPCONNECTION_DISPID_PORTMAPPINGPROTOCOL), helpstring("PortMappingProtocol")]
    HRESULT PortMappingProtocol([out, retval] BSTR *pProtocol);

    [propget, id(IWANIPCONNECTION_DISPID_INTERNALCLIENT), helpstring("InternalClient")]
    HRESULT InternalClient([out, retval] BSTR *pInternalClient);

    [propget, id(IWANIPCONNECTION_DISPID_PORTMAPPINGDESCRIPTION), helpstring("PortMappingDescription")]
    HRESULT PortMappingDescription([out, retval] BSTR *pDescription);

    [propget, id(IWANIPCONNECTION_DISPID_PORTMAPPINGENABLED), helpstring("PortMappingEnabled")]
    HRESULT PortMappingEnabled([out, retval] VARIANT_BOOL *pEnabled);

    [propget, id(IWANIPCONNECTION_DISPID_PORTMAPPINGLEASEDURATION), helpstring("PortMappingLeaseDuration")]
    HRESULT PortMappingLeaseDuration([out, retval] ULONG *LeaseDuration);

    [propget, id(IWANIPCONNECTION_DISPID_PORTMAPPINGNUMBEROFENTRIES), helpstring("PortMappingNumberOfEntries")]
    HRESULT PortMappingNumberOfEntries([out, retval] USHORT *pNumberOfEntries);

    [id(IWANIPCONNECTION_DISPID_SETCONNECTIONTYPE), helpstring("SetConnectionType")]
    HRESULT SetConnectionType([in] BSTR NewConnectionType);

    [id(IWANIPCONNECTION_DISPID_GETCONNECTIONTYPE), helpstring("GetConnectionType")]
    HRESULT GetConnectionTypeInfo([in, out] BSTR* pNewConnectionType, [in, out] BSTR* pNewPossibleConnectionTypes);

    [id(IWANIPCONNECTION_DISPID_REQUESTCONNECTION), helpstring("RequestConnection")]
    HRESULT RequestConnection(void);

    [id(IWANIPCONNECTION_DISPID_FORCETERMINATION), helpstring("ForceTermination")]
    HRESULT ForceTermination(void);

    [id(IWANIPCONNECTION_DISPID_GETSTATUSINFO), helpstring("GetStatusInfo")]
    HRESULT GetStatusInfo([in, out] BSTR* pNewConnectionStatus, [in, out] BSTR* pNewLastConnectionError, [in, out] ULONG* pNewUptime);

    [id(IWANIPCONNECTION_DISPID_GETNATRSIPSTATUS), helpstring("GetNATRSIPStatus")]
    HRESULT GetNATRSIPStatus([in, out] VARIANT_BOOL* pNewRSIPAvailable, [in, out] VARIANT_BOOL* pNewNATEnabled);

    [id(IWANIPCONNECTION_DISPID_GETLINKLAYERMAXBITRATES), helpstring("GetLinkLayerMaxBitRates")]
    HRESULT GetLinkLayerMaxBitRates([in, out] ULONG* pNewUpstreamMaxBitRate, [in, out] ULONG* pNewDownstreamMaxBitRate);

    [id(IWANIPCONNECTION_DISPID_GETGENERICPORTMAPPINGENTRY), helpstring("GetGenericPortMappingEntry")]
    HRESULT GetGenericPortMappingEntry([in] USHORT uwIndex, [in, out] BSTR* pRemoteHost, [in, out] USHORT* puwExternalPort, [in, out] BSTR* pProtocol, [in, out] USHORT* puwInternalPort, [in, out] BSTR* pInternalClient, [in, out] VARIANT_BOOL* pbEnabled, [in, out] BSTR* pDescription, [in, out] ULONG* pulLeaseDuration);

    [id(IWANIPCONNECTION_DISPID_GETSPECIFICPORTMAPPINGENTRY), helpstring("GetSpecificPortMappingEntry")]
    HRESULT GetSpecificPortMappingEntry([in] BSTR RemoteHost, [in] USHORT uwExternalPort, [in] BSTR Protocol, [in, out] USHORT* puwInternalPort, [in, out] BSTR* pInternalClient, [in, out] VARIANT_BOOL* pbEnabled, [in, out] BSTR* pDescription, [in, out] ULONG* pulLeaseDuration);

    [id(IWANIPCONNECTION_DISPID_ADDPORTMAPPING), helpstring("AddPortMapping")]
    HRESULT AddPortMapping([in] BSTR RemoteHost, [in] USHORT uwExternalPort, [in] BSTR Protocol, [in] USHORT uwInternalPort, [in] BSTR InternalClient, [in] VARIANT_BOOL bEnabled, [in] BSTR Description, [in] ULONG ulLeaseDuration);

    [id(IWANIPCONNECTION_DISPID_DELETEPORTMAPPING), helpstring("DeletePortMapping")]
    HRESULT DeletePortMapping([in] BSTR RemoteHost, [in] USHORT uwExternalPort, [in] BSTR Protocol);

    [id(IWANIPCONNECTION_DISPID_GETEXTERNALIPADDRESS), helpstring("GetExternalIPAddress")]
    HRESULT GetExternalIPAddress([in, out] BSTR* pExternalIPAddress);
};

[
    object,
    uuid(99780ed7-3c0d-4bb7-b238-9e0228ea4ff5),
    pointer_default(unique)
]
interface IStatisticsProvider : IUnknown 
{
    HRESULT GetStatistics([out] ULONG* pulBytesSent, [out] ULONG* pulBytesReceived, [out] ULONG* pulPacketsSent, [out] ULONG* pulPacketsReceived, [out] ULONG* pulUptime, [out] ULONG* pulSpeedbps);
}

[
    object,
    uuid(2c49d9a1-a48f-41e3-ac0b-7666dede5ee0),
    pointer_default(unique)
]
interface INATEventsSink : IUnknown 
{
    HRESULT PublicIPAddressChanged(void);
    HRESULT PortMappingsChanged(void);
}