windows-nt/Source/XPSP1/NT/base/fs/remotefs/dfs/inc/dfsprefix.h
2020-09-26 16:20:57 +08:00

170 lines
3.9 KiB
C

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1992.
//
// File: prefix.hxx
//
// Contents: PREFIX table definition
//
// History: SethuR -- Implemented
//--------------------------------------------------------------------------
#ifndef __PREFIX_HXX__
#define __PREFIX_HXX__
#ifdef __cplusplus
extern "C" {
#endif
//+---------------------------------------------------------------------
//
// Struct: DFS_PREFIX_TABLE API.
//
// History:
//
// Notes: The following API's are provided for manipulating the
// DFS_PREFIX_TABLE.
//
//----------------------------------------------------------------------
struct _DFS_PREFIX_TABLE;
extern
NTSTATUS DfsInitializePrefixTable(struct _DFS_PREFIX_TABLE **ppTable,
BOOLEAN fCaseSensitive,
PVOID Lock);
extern
NTSTATUS DfsInsertInPrefixTableLocked(struct _DFS_PREFIX_TABLE *pTable,
PUNICODE_STRING pPath,
PVOID pData);
extern
NTSTATUS DfsRemoveFromPrefixTableLocked(struct _DFS_PREFIX_TABLE *pTable,
PUNICODE_STRING pPath,
PVOID pMatchingData );
extern
NTSTATUS DfsReplaceInPrefixTableLocked(struct _DFS_PREFIX_TABLE *pTable,
PUNICODE_STRING pPath,
PVOID pReplaceData,
PVOID pMatchingData );
extern
NTSTATUS DfsFreePrefixTable(struct _DFS_PREFIX_TABLE *pTable);
extern
NTSTATUS DfsFindUnicodePrefixLocked(
IN struct _DFS_PREFIX_TABLE *pTable,
IN PUNICODE_STRING pPath,
OUT PUNICODE_STRING pSuffix,
OUT PVOID *ppData,
OUT PBOOLEAN pSubStringMatch );
extern
NTSTATUS
DfsPrefixTableAcquireWriteLock(
struct _DFS_PREFIX_TABLE *pTable );
extern
NTSTATUS
DfsPrefixTableAcquireReadLock(
struct _DFS_PREFIX_TABLE *pTable );
extern
NTSTATUS
DfsPrefixTableReleaseLock(
struct _DFS_PREFIX_TABLE *pTable );
extern NTSTATUS
DfsPrefixTableInit(VOID);
extern
void
DfsPrefixTableShutdown(void);
VOID
DfsDumpPrefixTable(
struct _DFS_PREFIX_TABLE *pPrefixTable,
IN VOID (*DumpFunction)(PVOID pEntry));
VOID
DfsProcessPrefixTable(
struct _DFS_PREFIX_TABLE *pPrefixTable,
IN VOID (*DumpFunction)(PVOID pEntry));
NTSTATUS
DfsDismantlePrefixTable(
IN struct _DFS_PREFIX_TABLE *pTable,
IN VOID (*ProcessFunction)(PVOID pEntry));
NTSTATUS
DfsDeletePrefixTable(
struct _DFS_PREFIX_TABLE *pTable);
NTSTATUS
DfsInsertInPrefixTable(
IN struct _DFS_PREFIX_TABLE *pTable,
IN PUNICODE_STRING pPath,
IN PVOID pData);
NTSTATUS
DfsFindUnicodePrefix(
IN struct _DFS_PREFIX_TABLE *pTable,
IN PUNICODE_STRING pPath,
IN PUNICODE_STRING pSuffix,
IN PVOID *ppData);
NTSTATUS
DfsRemoveFromPrefixTable(
IN struct _DFS_PREFIX_TABLE *pTable,
IN PUNICODE_STRING pPath,
IN PVOID pMatchingData);
NTSTATUS
DfsReplaceInPrefixTable(
IN struct _DFS_PREFIX_TABLE *pTable,
IN PUNICODE_STRING pPath,
IN PVOID pReplaceData,
IN PVOID pMatchingData);
NTSTATUS
DfsRemoveFromPrefixTableEx(
IN struct _DFS_PREFIX_TABLE * pTable,
IN PUNICODE_STRING pPath,
IN PVOID pMatchingData,
IN PVOID *pReturnedData);
NTSTATUS DfsRemoveFromPrefixTableLockedEx(
IN struct _DFS_PREFIX_TABLE * pTable,
IN PUNICODE_STRING pPath,
IN PVOID pMatchingData,
IN PVOID *pReturnedData);
#ifdef WPP_CB_TYPE
// only define this if we are doing tracing
VOID
PrefixSetTraceControl(WPP_CB_TYPE *Control);
#endif
#define DfsReferencePrefixTable(_pTable) \
DfsIncrementReference((PDFS_OBJECT_HEADER)(_pTable))
NTSTATUS
DfsDereferencePrefixTable(struct _DFS_PREFIX_TABLE *pTable );
#ifdef __cplusplus
}
#endif
#endif // __PREFIX_HXX__