/**********************************************************************/ /** Microsoft LAN Manager **/ /** Copyright(c) Microsoft Corp., 1990, 1991 **/ /**********************************************************************/ /* lmoefile.hxx This file contains the class declarations for the FILE3_ENUM and FILE3_ENUM_ITER classes. FILE3_ENUM is an enumeration class used to enumerate the open resources on a particular server. FILE3_ENUM_ITER is an iterator used to iterate the open resources from the FILE3_ENUM class. FILE HISTORY: KeithMo 29-May-1991 Created for the Server Manager. KeithMo 13-Aug-1991 Cleanup. KeithMo 19-Aug-1991 Code review revisions (code review attended by ChuckC, Hui-LiCh, JimH, JonN, KevinL). KeithMo 07-Oct-1991 Win32 Conversion. terryk 17-Oct-1991 Change file's permission type JonN 30-Jan-1992 Split LOC_LM_RESUME_ENUM from LM_RESUME_ENUM */ #ifndef _LMOEFILE_HXX #define _LMOEFILE_HXX /************************************************************************* NAME: FILE_ENUM SYNOPSIS: FILE_ENUM is a generic file enumerator. It will be subclassed for the specific infolevels as desired. INTERFACE: FILE_ENUM() - Class constructor. CallAPI() - Invokes the enumeration API. ResetResumeKey() - Resets the resume key to its initial state. PARENT: LOC_LM_RESUME_ENUM USES: None. CAVEATS: NOTES: HISTORY: KeithMo 29-May-1991 Created for the Server Manager. KeithMo 13-Aug-1991 Cleanup. KeithMo 15-Aug-1991 Made constructor protected. **************************************************************************/ DLL_CLASS FILE_ENUM : public LOC_LM_RESUME_ENUM { private: // // The NetFileEnum2() resume key. // FRK _frk; // // The enumeration will start at _nlsBasePath, // enumerating the files opened by _nlsUserName. // If the FILE_ENUM is constructed with a NULL // pszBasePath, then the entire disk tree is // enumerated. If pszUserName is NULL, then all // files opened by all users are enumerated. // NLS_STR _nlsBasePath; NLS_STR _nlsUserName; // // This virtual callback invokes the NetFileEnum2() API. // virtual APIERR CallAPI( BOOL fRestartEnum, BYTE ** ppbBuffer, UINT * pcEntriesRead ); // // This flag is set to TRUE when we are trying to use the // larger buffer size. // BOOL _fBigBuffer; protected: // // Usual constructor/destructor goodies. // FILE_ENUM( const TCHAR * pszServerName, const TCHAR * pszBasePath, const TCHAR * pszUserName, UINT uLevel ); ~FILE_ENUM( VOID ); // // This method is invoked to free an enumeration buffer. // virtual VOID FreeBuffer( BYTE ** ppbBuffer ); }; // class FILE_ENUM DLL_CLASS FILE2_ENUM_ITER; // Forward reference. DLL_CLASS FILE3_ENUM_ITER; // Forward reference. /************************************************************************* NAME: FILE2_ENUM SYNOPSIS: FILE2_ENUM is an enumerator for enumerating the open resources on a particular server. INTERFACE: FILE2_ENUM() - Class constructor. PARENT: FILE_ENUM USES: None. CAVEATS: NOTES: HISTORY: KeithMo 29-May-1991 Created for the Server Manager. KeithMo 19-Aug-1991 Made constructor's pszBasePath and pszUserName default to NULL. **************************************************************************/ DLL_CLASS FILE2_ENUM : public FILE_ENUM { public: FILE2_ENUM( const TCHAR * pszServerName, const TCHAR * pszBasePath = NULL, const TCHAR * pszUserName = NULL ); }; // class FILE2_ENUM /************************************************************************* NAME: FILE2_ENUM_OBJ SYNOPSIS: This is basically the return type from the FILE2_ENUM_ITER iterator. INTERFACE: FILE2_ENUM_OBJ - Class constructor. ~FILE2_ENUM_OBJ - Class destructor. QueryBufferPtr - Replaces ENUM_OBJ_BASE method. QueryFileId - Returns the file ID. PARENT: ENUM_OBJ_BASE HISTORY: KeithMo 07-Oct-1991 Created. **************************************************************************/ DLL_CLASS FILE2_ENUM_OBJ : public ENUM_OBJ_BASE { public: // // Provide properly-casted buffer Query/Set methods. // const struct file_info_2 * QueryBufferPtr( VOID ) const { return (const struct file_info_2 *)ENUM_OBJ_BASE::QueryBufferPtr(); } VOID SetBufferPtr( const struct file_info_2 * pBuffer ); // // Accessors. // DECLARE_ENUM_ACCESSOR( QueryFileId, ULONG, fi2_id ); }; // class FILE2_ENUM_OBJ DECLARE_LM_RESUME_ENUM_ITER_OF( FILE2, struct file_info_2 ) /************************************************************************* NAME: FILE3_ENUM SYNOPSIS: FILE3_ENUM is an enumerator for enumerating the open resources on a particular server. INTERFACE: FILE3_ENUM() - Class constructor. PARENT: FILE_ENUM USES: None. CAVEATS: NOTES: HISTORY: KeithMo 29-May-1991 Created for the Server Manager. KeithMo 19-Aug-1991 Made constructor's pszBasePath and pszUserName default to NULL. **************************************************************************/ DLL_CLASS FILE3_ENUM : public FILE_ENUM { public: FILE3_ENUM( const TCHAR * pszServerName, const TCHAR * pszBasePath = NULL, const TCHAR * pszUserName = NULL ); }; // class FILE3_ENUM /************************************************************************* NAME: FILE3_ENUM_OBJ SYNOPSIS: This is basically the return type from the FILE3_ENUM_ITER iterator. INTERFACE: FILE3_ENUM_OBJ - Class constructor. ~FILE3_ENUM_OBJ - Class destructor. QueryBufferPtr - Replaces ENUM_OBJ_BASE method. QueryFileId - Returns the file ID. QueryPermissions - Returns the file permissions. QueryNumLocks - Returns the number of file locks. QueryPathName - Returns the pathname. QueryUserName - Returns the name of the user that opened this file. PARENT: ENUM_OBJ_BASE HISTORY: KeithMo 07-Oct-1991 Created. **************************************************************************/ DLL_CLASS FILE3_ENUM_OBJ : public ENUM_OBJ_BASE { public: // // Provide properly-casted buffer Query/Set methods. // const struct file_info_3 * QueryBufferPtr( VOID ) const { return (const struct file_info_3 *)ENUM_OBJ_BASE::QueryBufferPtr(); } VOID SetBufferPtr( const struct file_info_3 * pBuffer ); // // Accessors. // DECLARE_ENUM_ACCESSOR( QueryFileId, ULONG, fi3_id ); DECLARE_ENUM_ACCESSOR( QueryPermissions,ULONG, fi3_permissions ); DECLARE_ENUM_ACCESSOR( QueryNumLocks, ULONG, fi3_num_locks ); DECLARE_ENUM_ACCESSOR( QueryPathName, const TCHAR *, fi3_pathname ); DECLARE_ENUM_ACCESSOR( QueryUserName, const TCHAR *, fi3_username ); }; // class FILE3_ENUM_OBJ DECLARE_LM_RESUME_ENUM_ITER_OF( FILE3, struct file_info_3 ) #endif // _LMOEFILE_HXX