183 lines
3.2 KiB
C++
183 lines
3.2 KiB
C++
/*++
|
|
|
|
Copyright (c) 1998 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
mpmap.hxx
|
|
|
|
Abstract:
|
|
|
|
This class implements a mapping among a set of three elements.
|
|
The three elements are guid volume name, drive letter, and device name.
|
|
|
|
Author:
|
|
|
|
Daniel Chan (danielch) May 20, 1998
|
|
|
|
--*/
|
|
|
|
#if !defined(MOUNT_POINT_MAP_DEFN)
|
|
|
|
#define MOUNT_POINT_MAP_DEFN
|
|
|
|
#include "arrayit.hxx"
|
|
|
|
#if defined ( _AUTOCHECK_ )
|
|
#define IFSUTIL_EXPORT
|
|
#elif defined ( _IFSUTIL_MEMBER_ )
|
|
#define IFSUTIL_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define IFSUTIL_EXPORT __declspec(dllimport)
|
|
#endif
|
|
|
|
|
|
DECLARE_CLASS( MOUNT_POINT_MAP );
|
|
|
|
class MOUNT_POINT_TUPLE : public OBJECT {
|
|
|
|
public:
|
|
|
|
IFSUTIL_EXPORT
|
|
DECLARE_CONSTRUCTOR( MOUNT_POINT_TUPLE );
|
|
|
|
DSTRING _DeviceName;
|
|
DSTRING _VolumeName;
|
|
DSTRING _DriveName;
|
|
};
|
|
|
|
|
|
DEFINE_POINTER_TYPES(MOUNT_POINT_TUPLE);
|
|
|
|
class MOUNT_POINT_MAP : public OBJECT {
|
|
|
|
public:
|
|
|
|
IFSUTIL_EXPORT
|
|
DECLARE_CONSTRUCTOR( MOUNT_POINT_MAP );
|
|
|
|
VIRTUAL
|
|
IFSUTIL_EXPORT
|
|
~MOUNT_POINT_MAP(
|
|
);
|
|
|
|
NONVIRTUAL
|
|
IFSUTIL_EXPORT
|
|
BOOLEAN
|
|
Initialize(
|
|
);
|
|
|
|
NONVIRTUAL
|
|
IFSUTIL_EXPORT
|
|
BOOLEAN
|
|
AddVolumeName(
|
|
IN PWSTRING DeviceName,
|
|
IN PWSTRING VolumeName
|
|
);
|
|
|
|
NONVIRTUAL
|
|
IFSUTIL_EXPORT
|
|
BOOLEAN
|
|
AddDriveName(
|
|
IN PWSTRING DeviceName,
|
|
IN PWSTRING DriveName
|
|
);
|
|
|
|
NONVIRTUAL
|
|
IFSUTIL_EXPORT
|
|
BOOLEAN
|
|
QueryVolumeName(
|
|
IN PWSTRING DeviceName,
|
|
OUT PWSTRING VolumeName
|
|
);
|
|
|
|
NONVIRTUAL
|
|
IFSUTIL_EXPORT
|
|
BOOLEAN
|
|
QueryDriveName(
|
|
IN PWSTRING DeviceName,
|
|
OUT PWSTRING DriveName
|
|
);
|
|
|
|
NONVIRTUAL
|
|
BOOLEAN
|
|
Put(
|
|
IN PMOUNT_POINT_TUPLE mptuple
|
|
);
|
|
|
|
NONVIRTUAL
|
|
PMOUNT_POINT_TUPLE
|
|
GetAt(
|
|
IN ULONG Index
|
|
);
|
|
|
|
NONVIRTUAL
|
|
IFSUTIL_EXPORT
|
|
BOOLEAN
|
|
GetAt(
|
|
IN ULONG Index,
|
|
OUT PWSTRING DriveName,
|
|
OUT PWSTRING VolumeName
|
|
);
|
|
|
|
NONVIRTUAL
|
|
ULONG
|
|
QueryMemberCount(
|
|
) CONST;
|
|
|
|
NONVIRTUAL
|
|
PARRAY_ITERATOR
|
|
QueryIterator(
|
|
) CONST;
|
|
|
|
private:
|
|
|
|
NONVIRTUAL
|
|
VOID
|
|
Construct (
|
|
);
|
|
|
|
NONVIRTUAL
|
|
VOID
|
|
Destroy(
|
|
);
|
|
|
|
PARRAY _parr;
|
|
};
|
|
|
|
INLINE
|
|
PMOUNT_POINT_TUPLE
|
|
MOUNT_POINT_MAP::GetAt(
|
|
IN ULONG Index
|
|
)
|
|
{
|
|
return (PMOUNT_POINT_TUPLE)_parr->GetAt(Index);
|
|
}
|
|
|
|
INLINE
|
|
BOOLEAN
|
|
MOUNT_POINT_MAP::Put(
|
|
IN PMOUNT_POINT_TUPLE mptuple
|
|
)
|
|
{
|
|
return _parr->Put(mptuple);
|
|
}
|
|
|
|
INLINE
|
|
ULONG
|
|
MOUNT_POINT_MAP::QueryMemberCount(
|
|
) CONST
|
|
{
|
|
return _parr->QueryMemberCount();
|
|
}
|
|
|
|
INLINE
|
|
PARRAY_ITERATOR
|
|
MOUNT_POINT_MAP::QueryIterator(
|
|
) CONST
|
|
{
|
|
return (PARRAY_ITERATOR)_parr->QueryIterator();
|
|
}
|
|
|
|
#endif // MOUNT_POINT_MAP_DEFN
|