Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

85 lines
2.1 KiB

//+----------------------------------------------------------------------------
//
// Copyright (C) 2000, Microsoft Corporation
//
// File: DfsReparse.hxx
//
// Contents: the Root Reparse Point support
//
//
// History: May, 2002 Author: SupW
//
//-----------------------------------------------------------------------------
#ifndef __DFS_REPARSE__
#define __DFS_REPARSE__
#define REPARSE_INDEX_PATH_LEN 64
#define REPARSE_INDEX_PATH L"$Extend\\$Reparse:$R:$INDEX_ALLOCATION"
// CchLength of \??\ is 4
#define WHACKWHACKQQ L"\\??\\"
#define WHACKWHACKQQ_SIZE (4 * sizeof(WCHAR))
//
// Files store timestamp in LARGE_INTEGERs, but we work with FILETIMEs
//
#define LARGE_INTEGER_TO_FILETIME( dest, src ) {\
(dest)->dwLowDateTime = (src)->LowPart; \
(dest)->dwHighDateTime = (src)->HighPart; \
}
//
// List of volumes that have dfs reparse points in them.
//
typedef struct _DFS_REPARSE_VOLUME_INFO {
UNICODE_STRING VolumeName;
LIST_ENTRY ListEntry;
} DFS_REPARSE_VOLUME_INFO, *PDFS_REPARSE_VOLUME_INFO;
VOID
DfsRemoveOrphanedReparsePoints(
IN FILETIME ServiceStartupTime);
NTSTATUS
DfsDeleteLinkReparsePoint(
PUNICODE_STRING pLinkName,
HANDLE RelativeHandle,
BOOLEAN bRemoveParentDirs);
NTSTATUS
DfsOpenDirectory(
PUNICODE_STRING pDirectoryName,
ULONG ShareMode,
HANDLE RelativeHandle,
PHANDLE pOpenedHandle,
PBOOLEAN pIsNewlyCreated );
VOID
DfsCloseDirectory(
HANDLE DirHandle );
//
// The TRUE flag in the third arg indicates that entire linkname
// needs to be deleted including any empty parent directories
// that may not necessarily be dfs reparse directories.
//
inline DFSSTATUS
DfsDeleteLinkReparsePointAndParents(
PUNICODE_STRING pLink,
HANDLE DirHandle )
{
return DfsDeleteLinkReparsePoint( pLink, DirHandle, TRUE );
}
inline DFSSTATUS
DfsDeleteLinkReparsePointDir(
PUNICODE_STRING pLink,
HANDLE DirHandle )
{
return DfsDeleteLinkReparsePoint( pLink, DirHandle, FALSE );
}
#endif