//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1998 - 1999 // // File: U P D A T E . H // // Contents: Declaration of RAS configuration objects. // // Notes: // // Author: shaunco 21 Mar 1997 // //---------------------------------------------------------------------------- #pragma once //nclude //nclude //nclude #include //nclude "ndiswan.h" #include "resource.h" //nclude "rasaf.h" //nclude "rasdata.h" //nclude "ncutil.h" #include "netcfgx.h" #include "bindobj.h" // // Frame type definitions // #define ISN_FRAME_TYPE_ETHERNET_II 0 #define ISN_FRAME_TYPE_802_3 1 #define ISN_FRAME_TYPE_802_2 2 #define ISN_FRAME_TYPE_SNAP 3 #define ISN_FRAME_TYPE_ARCNET 4 // we ignore this #define ISN_FRAME_TYPE_MAX 4 // of the four standard ones #define ISN_FRAME_TYPE_AUTO 0xff // // OPT - Move the isnipx.h definitions over here // // Frame types. For now these mirror those in isnipx.h. // #define MISN_FRAME_TYPE_ETHERNET_II 0 #define MISN_FRAME_TYPE_802_3 1 #define MISN_FRAME_TYPE_802_2 2 #define MISN_FRAME_TYPE_SNAP 3 #define MISN_FRAME_TYPE_ARCNET 4 // we ignore this #define MISN_FRAME_TYPE_MAX 4 // of the four standard ones //+--------------------------------------------------------------------------- // Steelhead // typedef void (WINAPI* PFN_MAKE_INTERFACE_INFO)(LPCWSTR pszwAdapterName, DWORD dwPacketType, LPBYTE* ppb); typedef void (WINAPI* PFN_MAKE_TRANSPORT_INFO)(LPBYTE* ppbGlobal, LPBYTE* ppbClient); struct ROUTER_MANAGER_INFO { DWORD dwTransportId; DWORD dwPacketType; LPCWSTR pszwTransportName; LPCWSTR pszwDllPath; PFN_MAKE_INTERFACE_INFO pfnMakeInterfaceInfo; PFN_MAKE_TRANSPORT_INFO pfnMakeTransportInfo; }; class CSteelhead : public CRasBindObject { public: protected: HANDLE m_hMprConfig; BOOL FAdapterExistsWithMatchingBindName (LPCWSTR pszwAdapterName, INetCfgComponent** ppnccAdapter); BOOL FIpxFrameTypeInUseOnAdapter (DWORD dwwFrameType, LPCWSTR pszwAdapterName); BOOL FIpxFrameTypeInUseOnAdapter (LPCWSTR pszwFrameType, LPCWSTR pszwAdapterName); HRESULT HrEnsureRouterInterfaceForAdapter (ROUTER_INTERFACE_TYPE dwIfType, DWORD dwPacketType, LPCWSTR pszwAdapterName, LPCWSTR pszwInterfaceName, const ROUTER_MANAGER_INFO& rmi); HRESULT HrEnsureIpxRouterInterfacesForAdapter (LPCWSTR pszwAdapterName); HRESULT HrEnsureRouterInterface (ROUTER_INTERFACE_TYPE dwIfType, LPCWSTR pszwInterfaceName, HANDLE* phInterface); HRESULT HrEnsureRouterInterfaceTransport (LPCWSTR pszwAdapterName, DWORD dwPacketType, HANDLE hInterface, const ROUTER_MANAGER_INFO& rmi); HRESULT HrEnsureRouterManager (const ROUTER_MANAGER_INFO& rmi); HRESULT HrEnsureRouterManagerDeleted (const ROUTER_MANAGER_INFO& rmi); HRESULT HrPassToAddInterfaces (); HRESULT HrPassToRemoveInterfaces (); HRESULT HrPassToRemoveInterfaceTransports (MPR_INTERFACE_0* pri0, LPCWSTR pszwAdapterName, INetCfgComponent* pnccAdapter); #if (WINVER >= 0x0501) HRESULT HrRemoveIPXRouterConfiguration (); #endif public: CSteelhead (); ~CSteelhead (); HRESULT HrUpdateRouterConfiguration (); STDMETHOD (Initialize) (INetCfg* pnc); // Use these buffers to store the names for the internal // and loopback adapters. WCHAR m_swzInternal[256]; WCHAR m_swzLoopback[256]; }; void MakeIpInterfaceInfo ( LPCWSTR pszwAdapterName, DWORD dwPacketType, LPBYTE* ppBuff); void MakeIpTransportInfo (LPBYTE* ppBuffGlobal, LPBYTE* ppBuffClient); void MakeIpxInterfaceInfo ( LPCWSTR pszwAdapterName, DWORD dwPacketType, LPBYTE* ppBuff); void MakeIpxTransportInfo (LPBYTE* ppBuffGlobal, LPBYTE* ppBuffClient); HRESULT HrMprConfigServerConnect( IN LPWSTR lpwsServerName, OUT HANDLE* phMprConfig ); HRESULT HrMprConfigInterfaceCreate( IN HANDLE hMprConfig, IN DWORD dwLevel, IN LPBYTE lpbBuffer, OUT HANDLE* phRouterInterface ); HRESULT HrMprConfigInterfaceEnum( IN HANDLE hMprConfig, IN DWORD dwLevel, IN OUT LPBYTE* lplpBuffer, IN DWORD dwPrefMaxLen, OUT LPDWORD lpdwEntriesRead, OUT LPDWORD lpdwTotalEntries, IN OUT LPDWORD lpdwResumeHandle OPTIONAL ); HRESULT HrMprConfigInterfaceTransportEnum( IN HANDLE hMprConfig, IN HANDLE hRouterInterface, IN DWORD dwLevel, IN OUT LPBYTE* lplpBuffer, // MPR_IFTRANSPORT_0 IN DWORD dwPrefMaxLen, OUT LPDWORD lpdwEntriesRead, OUT LPDWORD lpdwTotalEntries, IN OUT LPDWORD lpdwResumeHandle OPTIONAL ); HRESULT HrMprConfigInterfaceGetHandle( IN HANDLE hMprConfig, IN LPWSTR lpwsInterfaceName, OUT HANDLE* phRouterInterface ); HRESULT HrMprConfigInterfaceTransportAdd( IN HANDLE hMprConfig, IN HANDLE hRouterInterface, IN DWORD dwTransportId, IN LPWSTR lpwsTransportName OPTIONAL, IN LPBYTE pInterfaceInfo, IN DWORD dwInterfaceInfoSize, OUT HANDLE* phRouterIfTransport ); HRESULT HrMprConfigInterfaceTransportRemove( IN HANDLE hMprConfig, IN HANDLE hRouterInterface, IN HANDLE hRouterIfTransport ); HRESULT HrMprConfigInterfaceTransportGetHandle( IN HANDLE hMprConfig, IN HANDLE hRouterInterface, IN DWORD dwTransportId, OUT HANDLE* phRouterIfTransport ); HRESULT HrMprConfigTransportCreate( IN HANDLE hMprConfig, IN DWORD dwTransportId, IN LPWSTR lpwsTransportName OPTIONAL, IN LPBYTE pGlobalInfo, IN DWORD dwGlobalInfoSize, IN LPBYTE pClientInterfaceInfo OPTIONAL, IN DWORD dwClientInterfaceInfoSize OPTIONAL, IN LPWSTR lpwsDLLPath, OUT HANDLE* phRouterTransport ); HRESULT HrMprConfigTransportDelete( IN HANDLE hMprConfig, IN HANDLE hRouterTransport); HRESULT HrMprConfigTransportGetHandle( IN HANDLE hMprConfig, IN DWORD dwTransportId, OUT HANDLE* phRouterTransport ); HRESULT HrMprConfigTransportGetInfo( IN HANDLE hMprConfig, IN HANDLE hRouterTransport, IN OUT LPBYTE* ppGlobalInfo OPTIONAL, OUT LPDWORD lpdwGlobalInfoSize OPTIONAL, IN OUT LPBYTE* ppClientInterfaceInfo OPTIONAL, OUT LPDWORD lpdwClientInterfaceInfoSize OPTIONAL, IN OUT LPWSTR* lplpwsDLLPath OPTIONAL );