|
|
/*++
Copyright (C) Microsoft Corporation, 1998 - 1998
Module Name:
location.hxx
Abstract:
This module provides all the functions for determining the machines current physical location.
Author:
Steve Kiraly (SteveKi) 13-July-1998
Revision History:
Steve Kiraly (SteveKi) 13-July-1998 Genesis
--*/ #ifndef _PHYSLOC_HXX_
#define _PHYSLOC_HXX_
#include "asyncdlg.hxx"
/********************************************************************
Physical location class.
********************************************************************/ class TPhysicalLocation {
public:
enum EPhysicalLocations { kMaxPhysicalLocation = MAX_PATH, };
TPhysicalLocation:: TPhysicalLocation( VOID );
TPhysicalLocation:: ~TPhysicalLocation( VOID );
BOOL TPhysicalLocation:: bValid( VOID ) const;
BOOL TPhysicalLocation:: Discover( VOID );
BOOL TPhysicalLocation:: GetExact( IN TString &strLocation ) const;
BOOL TPhysicalLocation:: GetSearch( IN TString &strLocation ) const;
VOID TPhysicalLocation:: Invalidate( VOID );
BOOL TPhysicalLocation:: ReadGroupPolicyLocationSetting( IN OUT TString &strLocation );
BOOL TPhysicalLocation:: ReadUserLocationProperty( IN OUT TString &strLocation );
BOOL TPhysicalLocation:: ReadMachinesLocationProperty( IN OUT TString &strLocation );
BOOL TPhysicalLocation:: ReadSubnetLocationProperty( IN OUT TString &strLocation );
BOOL TPhysicalLocation:: ReadSiteLocationProperty( IN OUT TString &strLocation );
static VOID TPhysicalLocation:: vTrimSlash( IN OUT TString &strLocation );
static BOOL TPhysicalLocation:: bLocationEnabled( VOID );
private:
class TSubnets { public:
TSubnets:: TSubnets( VOID );
TSubnets:: ~TSubnets( VOID );
VOID TSubnets:: ClearAll( VOID );
BOOL TSubnets:: AddEntry( IN LPCTSTR pszNew );
UINT TSubnets:: NumEntries( VOID );
TString & TSubnets:: Table( UINT Index );
private:
//
// Operator = and copy are not defined.
//
TSubnets & TSubnets:: operator =( const TSubnets &rhs );
TSubnets:: TSubnets( const TSubnets &rhs );
UINT m_uNumEntries; TString *m_pstrTable; };
enum EDiscoveryType { kDiscoveryTypeUnknown, kDiscoveryTypePolicy, kDiscoveryTypeMachine, kDiscoveryTypeSubnet, kDiscoveryTypeSite, };
typedef DWORD (WINAPI *pfGetIpAddrTable)( PMIB_IPADDRTABLE, PULONG, BOOL ); typedef BOOLEAN (SEC_ENTRY *pfGetComputerObjectName)( EXTENDED_NAME_FORMAT, LPTSTR, PULONG ); typedef BOOLEAN (SEC_ENTRY *pfGetUserNameEx)( EXTENDED_NAME_FORMAT, LPTSTR, PULONG ); typedef DWORD (WINAPI *pfDsAddressToSiteNames)( LPCTSTR, DWORD, PSOCKET_ADDRESS, LPTSTR **, LPTSTR ** ); typedef VOID (WINAPI *pfNetApiBufferFree)( PVOID ); typedef char *(WSAAPI *LPFN_INET_NTOA)( struct in_addr );
//
// Operator = and copy are not defined.
//
TPhysicalLocation & TPhysicalLocation:: operator =( const TPhysicalLocation &rhs );
TPhysicalLocation:: TPhysicalLocation( const TPhysicalLocation &rhs );
BOOL TPhysicalLocation:: AddrToSite( IN DWORD dwAddr, IN TString &strSiteName, IN TString &strSubnetName );
BOOL TPhysicalLocation:: GetIpAddressTable( IN OUT PMIB_IPADDRTABLE *ppAddrTable );
VOID TPhysicalLocation:: DisplayLocation( VOID );
BOOL TPhysicalLocation:: GetSubnetObjectNames( IN TSubnets &Subnets );
BOOL TPhysicalLocation:: GetSubnetNames( IN TSubnets &Subnets );
UINT TPhysicalLocation:: NumSetBits( DWORD Value );
BOOL TPhysicalLocation:: GetSiteLocationString( IN LPCTSTR strSiteName, IN OUT TString &strSiteLocation );
BOOL TPhysicalLocation:: GetSubnetLocationString( IN LPCTSTR pszSubnetName, IN OUT TString &strSubnetLocation );
BOOL TPhysicalLocation:: WidenScope( IN LPCTSTR pszString, IN UINT uCount, IN OUT TString &strString ) const;
BOOL m_fInitalized; TString m_strLocation; TString m_strConfigurationContainer; EDiscoveryType m_eDiscoveryType; TLibrary m_IpHlpApi; pfGetIpAddrTable m_GetIpAddrTable; TLibrary m_SecExt; pfGetComputerObjectName m_GetComputerObjectName; pfGetUserNameEx m_GetUserNameEx; TLibrary m_NetApi; pfDsAddressToSiteNames m_DsAddressToSiteNames; pfNetApiBufferFree m_NetApiBufferFree; TLibrary m_WinSock; LPFN_INET_NTOA m_inet_ntoa; TDirectoryService m_Ds;
};
#endif // _PHYSLOC_HXX_
|