summaryrefslogtreecommitdiffstats
path: root/private/ole32/com/moniker/dfspath.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'private/ole32/com/moniker/dfspath.hxx')
-rw-r--r--private/ole32/com/moniker/dfspath.hxx148
1 files changed, 148 insertions, 0 deletions
diff --git a/private/ole32/com/moniker/dfspath.hxx b/private/ole32/com/moniker/dfspath.hxx
new file mode 100644
index 000000000..623ea35ef
--- /dev/null
+++ b/private/ole32/com/moniker/dfspath.hxx
@@ -0,0 +1,148 @@
+//+-------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1993.
+//
+// File: dfspath.hxx
+//
+// Contents: Helper classes for IFileMoniker
+//
+// Classes:
+// CDfsPath Encapsulates a DFS path.
+//
+// Functions:
+//
+// History: dd-mmm-yy Author Comment
+//
+//--------------------------------------------------------------------------
+
+#ifndef _DFSPATH_HXX_
+#define _DFSPATH_HXX_
+
+#include <memalloc.h>
+#include <dfsapi.h>
+
+
+
+// FILEMONIKERTYPE
+// A enumeration that specifies how a file moniker should be constructed.
+// default = default construction: try to normalize the provided path.
+// notNormalized = a non-normalized path is provided, don't attempt to
+// to normalize it: use as is.
+// normalizedProvided = a normalized path is provided. It's already
+// normalized: use as is.
+
+typedef enum _fileMonikerType
+{
+ defaultType,
+ notNormalized,
+ normalizedProvided
+} FILEMONIKERTYPE;
+
+
+
+//+-------------------------------------------------------------------------
+//
+// Class: CDfsPath
+//
+// Purpose:
+//
+// Interface:
+//
+// History: dd-mmm-yy Author Comment
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+class
+CDfsPath
+{
+public:
+ ~CDfsPath() { delete _dfsPath; };
+ CDfsPath();
+
+ // Construct a path object.
+ // pvMemPlace: place object in shared memory or in task memory.
+ // pDrivePath: specifies the path to use in constructing the object.
+ // fmtType: determines if a DFS path or a non-DFS path is used.
+ // dfsRoot: specifies the root to use if a DFS path is created.
+ CDfsPath(
+ void* pvMemPlacement,
+ LPTSTR pDrivePath,
+ FILEMONIKERTYPE fmtType = defaultType,
+ DFS_ROOT dfsRoot = DFS_ROOT_ORG);
+
+ // Return the path backing this object.
+ // GetNormalPath() is something of a misnomer, since the returned
+ // string may be either a DFS normalized path or a regular path,
+ // depending on what is backing this object.
+ // Note: Returns just a pointer: there is no resource transfer.
+ // Copy the data if required.
+ DFS_PATH GetNormalPath() { return(_dfsPath); };
+
+ // Return the UNC path that corresponds to this normalized path.
+ // If no UNC path corresponds, returns a simple path.
+ // Path is stored in MemAlloc'ed memory.
+ TCHAR* GetUncPath(TCHAR** ppwszUncPath);
+
+ // Return the drive-path equivalent for the DfsPath.
+ // Path is stored in MemAlloc'ed memory.
+ TCHAR* GetDrivePath(TCHAR** ppwszDrivePath);
+
+ // Return the equivalent DFS path with the highest possible root
+ // Path is stored in MemAlloc'ed memory.
+ HRESULT GetHighestPath(TCHAR** ppwszHighestPath);
+
+ // Return true if the object is back by a normalized path.
+ BOOL Normalized() { return _bNormalized; };
+
+#if DBG == 1
+ // Dump the path as a string.
+ void Dump();
+#endif // DBG == 1
+
+private:
+ DFS_PATH _dfsPath;
+ BOOL _bNormalized;
+};
+
+
+
+//+-------------------------------------------------------------------------
+//
+// Member: CDfsPath::CDfsPath()
+//
+// Synopsis: Default constructor.
+//
+// Effects:
+//
+// Arguments:
+//
+// Requires:
+//
+// Returns:
+//
+// Signals:
+//
+// Modifies:
+//
+// Derivation:
+//
+// Algorithm:
+//
+// History: dd-mmm-yy Author Comment
+//
+// Notes:
+//
+//--------------------------------------------------------------------------
+
+inline
+CDfsPath::CDfsPath()
+ : _dfsPath(NULL),
+ _bNormalized(TRUE)
+{
+};
+
+
+#endif // _DFSPATH_HXX_