/*++

Copyright(c) 1996  Microsoft Corporation

Module Name:

    rasrpc.idl

Abstract:

Author:

    Anthony Discolo (adiscolo) 20-Aug-1996

--*/

[
uuid(20610036-fa22-11cf-9823-00a0c911e5df),
version(1.0)
]
interface rasrpc
{
import "imports.idl";

//
// rasman.dll entry points
//
typedef DWORD RASRPC_HPORT;

DWORD
RasRpcPortEnum(
    [in] handle_t h,
    [in, out, unique, size_is(*pwcbPorts)] PBYTE pPorts,
    [in, out, ref] PWORD pwcbPorts,
    [in, out, ref] PWORD pwcPorts
    );

DWORD
RasRpcDeviceEnum(
    [in] handle_t h,
    [in, string] PCHAR pszDeviceType,
    [in, out, unique, size_is(*pwcbDevices)] PBYTE pDevices,
    [in, out, ref] PWORD pwcbDevices,
    [in, out, ref] PWORD pwcDevices
    );

DWORD
RasRpcGetDevConfig(
    [in] handle_t h,
    [in] RASRPC_HPORT hPort,
    [in, string] PCHAR pszDeviceType,
    [in, out, unique, size_is(*pdwcbConfig)] PBYTE pConfig,
    [in, out, ref] PDWORD pdwcbConfig
    );

DWORD
RasRpcPortGetInfo(
	[in] handle_t h,
	[in] RASRPC_HPORT hPort,
	[in, out, unique, size_is(*pSize)] PBYTE buffer,
	[in, out, ref] PWORD pSize);
    
//
// rasapi32.dll entry points
//
typedef DWORD RASRPC_HRASCONN;

#define RASRPC_MaxEntryName    256
#define RASRPC_MaxPortName     16
#define RASRPC_MaxDeviceName   128
#define RASRPC_MaxPhoneNumber  128
#define RASRPC_MAX_PATH        260

DWORD
RasRpcEnumConnections(
    [in] handle_t h,
    [in, out, unique, size_is(dwcbBufSize)] LPBYTE lprasconn,
    [in, out, ref] LPDWORD lpdwcb,
    [in, out, ref] LPDWORD lpdwc,
    [in] DWORD dwcbBufSize
    );

DWORD
RasRpcDeleteEntry(
    [in] handle_t h,
    [in, string] LPWSTR lpszPhonebook,
    [in, string] LPWSTR lpszEntry
    );

DWORD
RasRpcGetErrorString(
    [in] handle_t h,
    [in] UINT uErrorValue,
    [in, out, unique, size_is(cbBuf)] LPWSTR lpszBuf,
    [in] DWORD cbBuf
    );

DWORD
RasRpcGetCountryInfo(
    [in] handle_t h,
    [in, out, unique, size_is(*lpdwcbCountryInfo)] LPBYTE lpCountryInfo,
    [in, out, ref] LPDWORD lpdwcbCountryInfo
    );

//
// nouiutil.lib entry points
//
typedef struct _RASRPC_CALLBACKLIST
{
    WCHAR pszPortName[RASRPC_MaxPortName + 1];
    WCHAR pszDeviceName[RASRPC_MaxDeviceName + 1];
    WCHAR pszNumber[RASRPC_MaxPhoneNumber + 1];
    DWORD dwDeviceType;
    [unique] struct _RASRPC_CALLBACKLIST *pNext;
} RASRPC_CALLBACKLIST, *LPRASRPC_CALLBACKLIST;

typedef struct _RASRPC_STRINGLIST
{
    WCHAR psz[256];
    [unique] struct _RASRPC_STRINGLIST *pNext;
} RASRPC_STRINGLIST, *LPRASRPC_STRINGLIST;

typedef struct _RASRPC_LOCATIONLIST
{
    DWORD dwLocationId;
    DWORD iPrefix;
    DWORD iSuffix;
    [unique] struct _RASRPC_LOCATIONLIST *pNext;
} RASRPC_LOCATIONLIST, *LPRASRPC_LOCATIONLIST;

typedef struct _RASRPC_PBUSER
{
    BOOL fOperatorDial;
    BOOL fPreviewPhoneNumber;
    BOOL fUseLocation;
    BOOL fShowLights;
    BOOL fShowConnectStatus;
    BOOL fCloseOnDial;
    BOOL fAllowLogonPhonebookEdits;
    BOOL fAllowLogonLocationEdits;
    BOOL fSkipConnectComplete;
    BOOL fNewEntryWizard;
    DWORD dwRedialAttempts;
    DWORD dwRedialSeconds;
    DWORD dwIdleDisconnectSeconds;
    BOOL fRedialOnLinkFailure;
    BOOL fPopupOnTopWhenRedialing;
    BOOL fExpandAutoDialQuery;
    DWORD dwCallbackMode;
    [unique] LPRASRPC_CALLBACKLIST pCallbacks;
    WCHAR pszLastCallbackByCaller[RASRPC_MaxPhoneNumber + 1];
    DWORD dwPhonebookMode;
    WCHAR pszPersonalFile[RASRPC_MAX_PATH];
    WCHAR pszAlternatePath[RASRPC_MAX_PATH];
    [unique] LPRASRPC_STRINGLIST pPhonebooks;
    [unique] LPRASRPC_STRINGLIST pAreaCodes;
    BOOL fUseAreaAndCountry;
    [unique] LPRASRPC_STRINGLIST pPrefixes;
    [unique] LPRASRPC_STRINGLIST pSuffixes;
    [unique] LPRASRPC_LOCATIONLIST pLocations;
    DWORD dwXPhonebook;
    DWORD dwYPhonebook;
    WCHAR pszDefaultEntry[RASRPC_MaxEntryName + 1];
    BOOL fInitialized;
    BOOL fDirty;
} RASRPC_PBUSER, *LPRASRPC_PBUSER;

DWORD
RasRpcGetInstalledProtocols(
    [in] handle_t h
    );

DWORD
RasRpcGetUserPreferences(
    [in] handle_t h,
    [in, out] LPRASRPC_PBUSER pUser,
    [in] DWORD dwMode
    );

DWORD
RasRpcSetUserPreferences(
    [in] handle_t h,
    [in] LPRASRPC_PBUSER pUser,
    [in] DWORD dwMode
    );

//
// kernel32.dll entry points
//
UINT
RasRpcGetSystemDirectory(
    [in] handle_t h,
    [in, out, string, size_is(uSize)] LPWSTR lpBuffer,
    [in] UINT uSize
    );


DWORD
RasRpcSubmitRequest (
    [in] handle_t h,
    [in, out, unique, size_is(dwcbBufSize)] PBYTE pReqBuffer,
    [in] DWORD dwcbBufSize
    );

DWORD
RasRpcGetInstalledProtocolsEx(
    [in] handle_t h,
    [in] BOOL fRouter,
    [in] BOOL fRasCli,
    [in] BOOL fRasSrv
    );
    

DWORD
RasRpcGetVersion(
	[in] handle_t h,
	[in, out, ref] LPDWORD pdwVersion
);

};

