164 lines
3.7 KiB
C++
164 lines
3.7 KiB
C++
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (C) 2000, Microsoft Corporation
|
|
//
|
|
// File: DfsRegistryRootFolder.hxx
|
|
//
|
|
// Contents: the Root DFS Folder class for Registry Store
|
|
//
|
|
// Classes: DfsRegistryRootFolder
|
|
//
|
|
// History: Dec. 8 2000, Author: udayh
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifndef __DFS_REGISTRY_ROOT_FOLDER__
|
|
#define __DFS_REGISTRY_ROOT_FOLDER__
|
|
|
|
#include "DfsRootFolder.hxx"
|
|
#include "DfsRegistryStore.hxx"
|
|
//+----------------------------------------------------------------------------
|
|
//
|
|
// Class: DfsRegistryRootFolder
|
|
//
|
|
// Synopsis: This class implements The Dfs Registry root folder.
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
class DfsRegistryRootFolder: public DfsRootFolder
|
|
{
|
|
|
|
private:
|
|
DfsRegistryStore *_pStore; // Pointer to registered store
|
|
// that owns this root.
|
|
|
|
|
|
protected:
|
|
|
|
DfsStore *
|
|
GetMetadataStore()
|
|
{
|
|
return _pStore;
|
|
}
|
|
|
|
//
|
|
// Function GetMetadataKey: Gets the registry metadata key for
|
|
// this root folder.
|
|
//
|
|
|
|
DFSSTATUS
|
|
GetMetadataHandle( PDFS_METADATA_HANDLE pRootHandle )
|
|
{
|
|
HKEY RootKey;
|
|
DFSSTATUS Status;
|
|
|
|
Status = GetMetadataKey( &RootKey );
|
|
if (Status == ERROR_SUCCESS)
|
|
{
|
|
*pRootHandle = CreateMetadataHandle(RootKey);
|
|
}
|
|
return Status;
|
|
}
|
|
|
|
VOID
|
|
ReleaseMetadataHandle( DFS_METADATA_HANDLE RootHandle )
|
|
{
|
|
HKEY RootKey;
|
|
|
|
RootKey = (HKEY)ExtractFromMetadataHandle(RootHandle);
|
|
|
|
ReleaseMetadataKey(RootKey);
|
|
|
|
DestroyMetadataHandle(RootHandle);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
private:
|
|
DFSSTATUS
|
|
GetMetadataKey( PHKEY pOpenedKey )
|
|
{
|
|
return _pStore->GetRootKey( GetNameContextString(),
|
|
GetRootRegKeyNameString(),
|
|
NULL,
|
|
pOpenedKey );
|
|
}
|
|
|
|
//
|
|
// Function ReleaseMetadataKey: Closes the registry metadata key for
|
|
// this root folder.
|
|
//
|
|
|
|
VOID
|
|
ReleaseMetadataKey( HKEY OpenedKey )
|
|
{
|
|
RegCloseKey( OpenedKey );
|
|
}
|
|
|
|
public:
|
|
|
|
//
|
|
// Function DfsRegistryRootFolder: Constructor.
|
|
// Initializes the RegistryRootFolder class instance.
|
|
//
|
|
DfsRegistryRootFolder(
|
|
LPWSTR NameContext,
|
|
LPWSTR RootRegistryName,
|
|
PUNICODE_STRING pLogicalName,
|
|
PUNICODE_STRING pPhysicalShare,
|
|
DfsRegistryStore *pParentStore,
|
|
DFSSTATUS *pStatus );
|
|
|
|
~DfsRegistryRootFolder()
|
|
{
|
|
DfsFreeUnicodeString(&_DfsVisibleContext);
|
|
if (_pStore != NULL)
|
|
{
|
|
_pStore->ReleaseReference();
|
|
_pStore = NULL;
|
|
}
|
|
}
|
|
|
|
//
|
|
// Function Synchronize: This function overrides the synchronize
|
|
// defined in the base class.
|
|
// The synchronize function updates the root folder's children
|
|
// with the uptodate information available in the store's metadata.
|
|
//
|
|
DFSSTATUS
|
|
Synchronize();
|
|
|
|
DFSSTATUS
|
|
GetMetadataLogicalToLinkName( PUNICODE_STRING pIn,
|
|
PUNICODE_STRING pOut )
|
|
{
|
|
UNICODE_STRING FirstComp;
|
|
|
|
return DfsGetFirstComponent( pIn,
|
|
&FirstComp,
|
|
pOut );
|
|
}
|
|
|
|
VOID
|
|
ReleaseMetadataLogicalToLinkName( PUNICODE_STRING pIn )
|
|
{
|
|
UNREFERENCED_PARAMETER(pIn);
|
|
return NOTHING;
|
|
}
|
|
};
|
|
|
|
|
|
#endif // __DFS_REGISTRY_ROOT_FOLDER__
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|