mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
222 lines
5.1 KiB
222 lines
5.1 KiB
/**********************************************************************/
|
|
/** Microsoft Windows NT **/
|
|
/** Copyright(c) Microsoft Corp., 1992 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
MPRDev.hxx
|
|
|
|
Contains MPR constants
|
|
|
|
|
|
|
|
FILE HISTORY:
|
|
Johnl 08-Jan-1992 Commented
|
|
Chuckc 09-Feb-1992 Cleaned up, added MPR_DEVICE class
|
|
*/
|
|
|
|
#ifndef _MPRDEV_HXX_
|
|
#define _MPRDEV_HXX_
|
|
|
|
#define DEVICE_FIRST 0
|
|
#define DRIVE_FIRST (DEVICE_FIRST)
|
|
#define DRIVE_LAST (DRIVE_FIRST+25)
|
|
#define LPT_FIRST (DRIVE_LAST+1)
|
|
#define LPT_LAST (LPT_FIRST+8)
|
|
#define COMM_FIRST (LPT_LAST+1)
|
|
#define COMM_LAST (COMM_FIRST+8)
|
|
#define DEVICE_LAST (COMM_LAST)
|
|
|
|
#define DEV_MASK_UNUSED 0x0001
|
|
#define DEV_MASK_REMOTE 0x0002
|
|
#define DEV_MASK_REMEMBERED 0x0004
|
|
|
|
#define IsUnavailMask(f) (f & DEV_MASK_UNUSED && f & DEV_MASK_REMEMBERED)
|
|
|
|
#undef DEVICE_TYPE // DEVICE_TYPE is defined as ULONG in nt.h
|
|
enum DEVICE_TYPE
|
|
{
|
|
DEV_TYPE_ERROR,
|
|
DEV_TYPE_DISK,
|
|
DEV_TYPE_PRINT,
|
|
DEV_TYPE_COMM,
|
|
DEV_TYPE_ANY,
|
|
DEV_TYPE_UNKNOWN
|
|
};
|
|
|
|
enum DEVICE_USAGE
|
|
{
|
|
DEV_USAGE_CANCONNECT,
|
|
DEV_USAGE_CANDISCONNECT,
|
|
DEV_USAGE_ISCONNECTED,
|
|
DEV_USAGE_CANDISCONNECTBUTUNUSED
|
|
};
|
|
|
|
|
|
/*************************** BASE DEVICE *****************************/
|
|
|
|
class BASE_DEVICE : public BASE
|
|
{
|
|
public:
|
|
const TCHAR *QueryName(void) const
|
|
{ return _nlsDevice.QueryPch() ; }
|
|
|
|
const TCHAR *QueryRemoteName( void ) const
|
|
{ return _nlsRemote.QueryPch() ; }
|
|
|
|
DEVICE_TYPE QueryType(void) const
|
|
{ return _devType ; }
|
|
|
|
void SetFlags(ULONG ulFlags)
|
|
{ _ulFlags |= ulFlags ; }
|
|
|
|
ULONG QueryFlags(void)
|
|
{ return(_ulFlags) ; }
|
|
|
|
BASE_DEVICE (DEVICE_TYPE devType,
|
|
ULONG ulFlags,
|
|
TCHAR *pszDevice,
|
|
TCHAR *pszRemote) ;
|
|
|
|
virtual ~BASE_DEVICE() ;
|
|
|
|
protected:
|
|
private:
|
|
DEVICE_TYPE _devType ;
|
|
ULONG _ulFlags ;
|
|
|
|
NLS_STR _nlsRemote ;
|
|
NLS_STR _nlsDevice ;
|
|
} ;
|
|
|
|
|
|
|
|
class ITER_BASE_DEVICE : public BASE
|
|
{
|
|
public:
|
|
|
|
BASE_DEVICE *Next( void ) ;
|
|
inline VOID Reset( void ) { _iNextDev = 0 ; }
|
|
inline BASE_DEVICE* operator()(void) { return Next(); }
|
|
ITER_BASE_DEVICE(DEVICE_TYPE devType, DEVICE_USAGE devUsage) ;
|
|
~ITER_BASE_DEVICE() ;
|
|
|
|
protected:
|
|
APIERR Insert(BASE_DEVICE *pDev) ;
|
|
APIERR Delete(DEVICE_TYPE devType,
|
|
const TCHAR *pszName) ;
|
|
BASE_DEVICE * Lookup(DEVICE_TYPE devType,
|
|
const TCHAR *pszName) ;
|
|
|
|
DEVICE_TYPE _devType ;
|
|
DEVICE_USAGE _devUsage ;
|
|
|
|
private:
|
|
BASE_DEVICE * _apdevTable[DEVICE_LAST+1] ;
|
|
int _iNextDev ;
|
|
int FindEntryIndex(DEVICE_TYPE devType,
|
|
const TCHAR *pszName) ;
|
|
} ;
|
|
|
|
/*************************** MPR DEVICE *****************************/
|
|
|
|
class MPR_DEVICE : public BASE_DEVICE
|
|
{
|
|
public:
|
|
MPR_DEVICE (DEVICE_TYPE devType,
|
|
ULONG ulFlags,
|
|
LPNETRESOURCE lpNetResource) ;
|
|
|
|
MPR_DEVICE (DEVICE_TYPE devType,
|
|
ULONG ulFlags,
|
|
TCHAR * pszLocalName) ;
|
|
|
|
virtual ~MPR_DEVICE() ;
|
|
|
|
const TCHAR *QueryProvider( VOID ) const
|
|
{ return _nlsProvider.QueryPch() ; }
|
|
|
|
protected:
|
|
|
|
private:
|
|
NLS_STR _nlsProvider ;
|
|
} ;
|
|
|
|
|
|
class ITER_MPR_DEVICE : public ITER_BASE_DEVICE
|
|
{
|
|
public:
|
|
|
|
MPR_DEVICE *Next( void )
|
|
{ return ( (MPR_DEVICE *) ITER_BASE_DEVICE::Next()) ; }
|
|
|
|
inline MPR_DEVICE* operator()(void) { return Next(); }
|
|
|
|
ITER_MPR_DEVICE(DEVICE_TYPE devType, DEVICE_USAGE devUsage) ;
|
|
|
|
~ITER_MPR_DEVICE() ;
|
|
|
|
protected:
|
|
|
|
private:
|
|
void EnumNetDevices(void) ;
|
|
void EnumRememberedDevices( BOOL fUnused = FALSE ) ;
|
|
void EnumUnusedDevices(void) ;
|
|
ULONG MapDevTypeToWNetType(DEVICE_TYPE devType) ;
|
|
} ;
|
|
|
|
|
|
/***************ITER_NETRESOURCE **************************/
|
|
|
|
class ITER_NETRESOURCE : public BASE
|
|
{
|
|
public:
|
|
|
|
NETRESOURCE *Next( void ) ;
|
|
|
|
void Reset( void ) ;
|
|
|
|
inline NETRESOURCE *operator()(void) { return Next(); }
|
|
|
|
ITER_NETRESOURCE(ULONG ulScope, ULONG ulType) ;
|
|
|
|
~ITER_NETRESOURCE() ;
|
|
|
|
protected:
|
|
|
|
private:
|
|
ULONG _cEntries ;
|
|
ULONG _ulScope ;
|
|
ULONG _ulType ;
|
|
LPNETRESOURCE _lpNetResource ;
|
|
HANDLE _hEnum ;
|
|
BUFFER _buffer ;
|
|
BOOL _fNoMore ;
|
|
};
|
|
|
|
/***************ITER_LOCALRESOURCE **************************/
|
|
|
|
class ITER_LOCALRESOURCE : public BASE
|
|
{
|
|
public:
|
|
|
|
TCHAR *Next( void ) ;
|
|
|
|
void Reset( void ) ;
|
|
|
|
inline TCHAR *operator()(void) { return Next(); }
|
|
|
|
ITER_LOCALRESOURCE(DEVICE_TYPE devType, BOOL fExist = TRUE) ;
|
|
|
|
~ITER_LOCALRESOURCE() ;
|
|
|
|
protected:
|
|
|
|
private:
|
|
BOOL _fExist ;
|
|
DEVICE_TYPE _devType ;
|
|
TCHAR _szDevice[16] ; // BUGBUG
|
|
int _iNext ;
|
|
};
|
|
|
|
#endif // _MPRDEV_HXX_
|