windows-nt/Source/XPSP1/NT/net/rras/ras/ui/rasscrpt/rnaspi.h
2020-09-26 16:20:57 +08:00

238 lines
8.5 KiB
C

/* Copyright (c) 1992-1995, Microsoft Corporation, all rights reserved
**
** ras.h
** Remote Access Session Management Service Provider Interface
** Public header for Session Management Provider Interface
*/
#ifndef _RNASPI_H_
#define _RNASPI_H_
//****************************************************************************
// RNA Session Management Module Service Provider Interface
//****************************************************************************
#define RNA_MaxSMMType 32
// The type of RNA session
//
typedef enum {
SESSTYPE_INITIATOR,
SESSTYPE_RESPONDER
} SESSTYPE;
// Session configuration options
//
#define SMMCFG_SW_COMPRESSION 0x00000001 // Software compression is on
#define SMMCFG_PW_ENCRYPTED 0x00000002 // Encrypted password only
#define SMMCFG_NW_LOGON 0x00000004 // Logon to the network
#define SMMCFG_SW_ENCRYPTION 0x00000010 // SW encryption is okay
#define SMMCFG_ALL 0x00000017 // All the user-specified options
// Negotiated protocols
//
#define SMMPROT_NB 0x00000001 // NetBEUI
#define SMMPROT_IPX 0x00000002 // IPX
#define SMMPROT_IP 0x00000004 // TCP/IP
#define SMMPROT_ALL 0x00000007 // all protocols negotiated
// Error codes that a MAC can return when posting disconnect message
//
#define MACERR_REMOTE_DISCONNECTING 0x00000001
#define MACERR_REMOTE_NO_RESPONSE 0x00000002
// The session confuration information
//
typedef struct tagSESS_CONFIGURATION_INFO
{
DWORD dwSize;
char szEntryName[RAS_MaxEntryName + 1];
SESSTYPE stSessType;
DWORD fdwSessOption;
DWORD fdwProtocols;
BOOL fUserSecurity;
char szUserName[UNLEN + 1];
char szPassword[PWLEN + 1];
char szDomainName[DNLEN + 1];
} SESS_CONFIGURATION_INFO, *PSESS_CONFIGURATION_INFO,
FAR *LPSESS_CONFIGURATION_INFO;
// Session configuration start/stop functions
//
typedef DWORD (WINAPI * SESSSTARTPROC)(HANDLE, LPSESS_CONFIGURATION_INFO);
typedef DWORD (WINAPI * SESSSTOPPROC)(HANDLE);
// Session configuration entry point table
//
typedef struct tagRNA_FUNCS
{
DWORD dwSize; // The structure size
SESSSTARTPROC lpfnStart; // RnaSessStart Entry
SESSSTOPPROC lpfnStop; // RnaSessStop Entry
} RNA_FUNCS, *PRNA_FUNCS, FAR *LPRNA_FUNCS;
// Session Management Module initialization function
//
typedef DWORD (WINAPI * SESSINITIALIZEPROC)(LPSTR, LPRNA_FUNCS);
//****************************************************************************
// RNA Session Manager Service Interface
//****************************************************************************
typedef struct tagRnaComplete_Info
{
DWORD dwSize; // The structure size
DWORD dwResult; // The returning error code
UINT idMsg; // SMM-specific error message ID
BOOL fUnload; // Unload the module on success?
HANDLE hThread; // Event to wait for unloading
} COMPLETE_INFO, *PCOMPLETE_INFO, FAR *LPCOMPLETE_INFO;
typedef struct tagProjection_Info
{
DWORD dwSize; // The structure size
RASPROJECTION RasProjection; // The projection type
union {
RASAMB RasAMB;
RASPPPNBF RasPPPNBF;
RASPPPIPX RasPPPIPX;
RASPPPIP RasPPPIP;
} ProjInfo;
} PROJECTION_INFO, *PPROJECTION_INFO, FAR *LPPROJECTION_INFO;
//
// Responses to Session Management Request
//
DWORD WINAPI RnaComplete( HANDLE hConn, LPCOMPLETE_INFO lpci,
LPPROJECTION_INFO lppi, DWORD cEntries);
DWORD WINAPI RnaTerminate( HANDLE hConn, HANDLE hThread );
//
// MAC management services
//
#define IEEE_ADDRESS_LENGTH 6 // Token-ring and Ethernet address lengths
typedef struct tagMAC_FEATURES {
DWORD SendFeatureBits; // A bit field of compression/features sendable
DWORD RecvFeatureBits; // A bit field of compression/features receivable
DWORD MaxSendFrameSize; // Maximum frame size that can be sent
// must be less than or equal default
DWORD MaxRecvFrameSize; // Maximum frame size that can be rcvd
// must be less than or equal default
DWORD LinkSpeed; // New RAW link speed in bits/sec
// Ignored if 0
} MAC_FEATURES, *PMAC_FEATURES, FAR* LPMAC_FEATURES;
#ifdef _WIN64
#pragma pack(8)
#else
#pragma pack(4)
#endif
typedef struct tagMAC_OPEN {
WORD hRasEndpoint; // unique for each endpoint assigned
LPVOID MacAdapter; // Which binding to AsyMac to use
// if NULL, will default to last binding
DWORD LinkSpeed; // RAW link speed in bits per sec
WORD QualOfConnect; // NdisAsyncRaw, NdisAsyncErrorControl, ...
BYTE IEEEAddress[IEEE_ADDRESS_LENGTH]; // The 802.5 or 802.3
MAC_FEATURES macFeatures; // Readable configuration parameters
enum { // All different types of device drivers
SERIAL_DEVICE, // are listed here. For instance
SNA_DEVICE, // the serial driver requires diff.
// irps than the SNA driver.
MINIPORT_DEVICE // NDIS WAN Miniport Devices.
} DeviceType;
union { // handles required for above device
// driver types.
LONG FileHandle; // the Win32 or Nt File Handle
struct SNAHandle {
LPVOID ReadHandle;
LPVOID WriteHandle;
};
} Handles;
DWORD hWndConn; // Window handle for connection
DWORD wMsg; // The msg to post when disconnecting
DWORD dwStatus; // The status of the open call
} MAC_OPEN, *PMAC_OPEN, FAR* LPMAC_OPEN;
#pragma pack()
typedef struct tagDEVICE_PORT_INFO {
DWORD dwSize;
HANDLE hDevicePort;
HANDLE hLine;
HANDLE hCall;
DWORD dwAddressID;
DWORD dwLinkSpeed;
char szDeviceClass[RAS_MaxDeviceType+1];
} DEVICE_PORT_INFO, *PDEVICE_PORT_INFO, FAR* LPDEVICE_PORT_INFO;
DWORD WINAPI RnaGetDevicePort( HANDLE hConn, LPDEVICE_PORT_INFO lpdpi );
DWORD WINAPI RnaOpenMac( HANDLE hConn, HANDLE *lphMAC,
LPMAC_OPEN lpmo, DWORD dwSize, HANDLE hEvent );
DWORD WINAPI RnaCloseMac( HANDLE hConn );
//
// User Profile Services
//
typedef enum tagRNAACCESSTYPE { PCONLY, NETANDPC } RNAACCESSTYPE;
typedef struct tagUSER_PROFILE
{
DWORD dwSize;
char szUserName[UNLEN + 1];
char szPassword[PWLEN + 1];
char szDomainName[DNLEN + 1];
BOOL fUseCallbacks;
RNAACCESSTYPE accesstype;
UINT uTimeOut;
} USER_PROFILE, *PUSER_PROFILE, FAR *LPUSER_PROFILE;
DWORD WINAPI RnaGetUserProfile( HANDLE hConn, LPUSER_PROFILE lpUserProfile );
//
// Callback security services
//
// Callback security type
//
enum {
CALLBACK_SECURE,
CALLBACK_CONVENIENCE
};
DWORD WINAPI RnaGetCallbackList( DWORD * lpdwType,
LPSTR lpszLocList, LPINT lpcbLoc,
LPSTR lpszPhoneList, LPINT lpcbPhone,
LPINT lpcEntries);
DWORD WINAPI RnaUICallbackDialog( HANDLE hConn, LPSTR lpszLocList,
DWORD dwType, BOOL fOptional,
LPINT lpIndex,
LPSTR lpszSelectLocation, UINT cbBuff);
DWORD WINAPI RnaStartCallback( HANDLE hConn, HANDLE hEvent);
// Miscellaneous services
//
DWORD WINAPI RnaUIUsernamePassword( HANDLE hConn, LPSTR lpszUsername,
UINT cbUsername, LPSTR lpszPassword,
UINT cbPassword, LPSTR lpszDomain,
UINT cbDomain);
DWORD WINAPI RnaUIChangePassword( HANDLE hConn, LPSTR lpszUsername,
UINT cbPassword);
DWORD WINAPI RnaGetOverlaidSMM ( LPSTR lpszSMMType, LPSTR lpszModuleName,
LPBYTE lpBuf, DWORD dwSize);
#endif // _RNASPI_H_