74 lines
2 KiB
C++
74 lines
2 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// File: query.cxx
|
|
//
|
|
// Contents: This module contains the functions which deal with queries
|
|
// basically, those which help us in getting from an entry path
|
|
// to a volume object Name.
|
|
//
|
|
// History: 24-May-1993 SudK Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#include "headers.hxx"
|
|
#pragma hdrstop
|
|
|
|
#include "cdfsvol.hxx"
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Function: GetVolObjForPath,
|
|
//
|
|
// Synopsis: Given an entrypath it returns the volume object which has
|
|
// the exact same entry path on it.
|
|
//
|
|
// Arguments: [pwszEntryPath] -- The Entry Path is given here.
|
|
// [fExactMatch] -- If TRUE, then the volume object's entry path
|
|
// must match pwszEntryPath exactly.
|
|
// [ppwszVolFound] -- The appropriate vol obj name.
|
|
//
|
|
// Returns:
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
DWORD
|
|
GetVolObjForPath(
|
|
IN PWSTR pwszEntryPath,
|
|
IN BOOLEAN fExactMatch,
|
|
OUT PWSTR *ppwszVolFound
|
|
)
|
|
{
|
|
PWCHAR pPrivatePrefix;
|
|
ULONG ulen = wcslen(pwszEntryPath);
|
|
DWORD dwErr;
|
|
|
|
if (pDfsmStorageDirectory == NULL) {
|
|
|
|
return ERROR_INVALID_PARAMETER;
|
|
|
|
}
|
|
|
|
//
|
|
// Get rid of a trailing backslash if there is one.
|
|
//
|
|
|
|
pPrivatePrefix = new WCHAR[ulen+1];
|
|
if (pPrivatePrefix != NULL) {
|
|
wcscpy(pPrivatePrefix, pwszEntryPath);
|
|
if (ulen >= 1 && pPrivatePrefix[ulen-1] == L'\\')
|
|
pPrivatePrefix[ulen-1] = L'\0';
|
|
|
|
dwErr = pDfsmStorageDirectory->GetObjectForPrefix(
|
|
pPrivatePrefix,
|
|
fExactMatch,
|
|
ppwszVolFound,
|
|
&ulen);
|
|
|
|
delete [] pPrivatePrefix;
|
|
} else {
|
|
dwErr = ERROR_OUTOFMEMORY;
|
|
}
|
|
|
|
return(dwErr);
|
|
|
|
}
|