NT4/private/ole32/stg/h/ntenm.hxx
2020-09-30 17:12:29 +02:00

105 lines
2.6 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1993.
//
// File: ntenm.hxx
//
// Contents: NT handle enumerator
//
// Classes: CNtEnum
//
// History: 12-Jul-93 DrewB Created
//
//----------------------------------------------------------------------------
#ifndef __NTENM_HXX__
#define __NTENM_HXX__
// Name return control
#define NTE_NONAME 0
#define NTE_BUFFERNAME 1
#define NTE_STATNAME 2
//+---------------------------------------------------------------------------
//
// Class: CNtEnum (nte)
//
// Purpose: Enumerates using an NT handle
//
// Interface: See below
//
// History: 12-Jul-93 DrewB Created
//
//----------------------------------------------------------------------------
class CNtEnum
{
public:
CNtEnum (BOOL fIsStorage = TRUE) { _fIsStorage = fIsStorage; _afsi = _pfsi = _pfsiEnd = NULL; }
~CNtEnum () { if (_afsi) delete [] _afsi; }
SCODE InitFromHandle(HANDLE h, BOOL fReset);
SCODE Next(STATSTG *pstat, WCHAR *pwcsName, DWORD dwNte, FILEDIR *pfd);
SCODE NextOfs(STATSTG *pstat, WCHAR *pwcsName, DWORD dwNte, FILEDIR *pfd);
inline void Reset(void);
inline HANDLE GetHandle(void);
private:
SCODE EnumDir (STATSTG *pstat, WCHAR *pwcsName, DWORD dwNte, FILEDIR *pfd);
SCODE BeginEnumStm (void);
SCODE EnumStm (STATSTG *pstat, WCHAR *pwcsName, DWORD dwNte, FILEDIR *pfd);
enum NtEnumStatus {
NES_RESET_PENDING,
NES_ENUM_DIR,
};
enum {
CFSI_DEFAULT = 32
};
NtEnumStatus _nes;
NuSafeNtHandle _h;
int _cfsi;
FILE_STREAM_INFORMATION *_afsi;
FILE_STREAM_INFORMATION *_pfsi;
FILE_STREAM_INFORMATION *_pfsiEnd;
BOOL _fIsStorage;
};
//+---------------------------------------------------------------------------
//
// Member: CNtEnum::Reset, public
//
// Synopsis: Resets the enumeration
//
// History: 12-Jul-93 DrewB Created
//
//----------------------------------------------------------------------------
inline void CNtEnum::Reset(void)
{
ssDebugOut((DEB_ITRACE, "In CNtEnum::Reset:%p()\n", this));
_nes = NES_RESET_PENDING;
ssDebugOut((DEB_ITRACE, "Out CNtEnum::Reset\n"));
}
//+---------------------------------------------------------------------------
//
// Member: CNtEnum::GetHandle, public
//
// Synopsis: Returns the handle
//
// History: 12-Jul-93 DrewB Created
//
//----------------------------------------------------------------------------
inline HANDLE CNtEnum::GetHandle(void)
{
return _h;
}
#endif // __NTENM_HXX__