Windows NT 4.0 source code leak
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

/**********************************************************************/
/** 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_